サイトをPHPでテンプレート化するメリットとデメリット

WEBサイトPHPテンプレート化するのは、テンプレートの変更がしやすくなるのでメリットが大きいです。
でもその反面、サイトをテンプレート化するデメリットもあります。


サイトをテンプレート化するメリット

メンテナンスが楽

サイトをテンプレート化して include で読み込むと、メンテナンスがとてもになります。
例えば、ヘッダーにDIVタグを追加したいなあと思った時、普通のサイトであればヘッダーのタグを全部書き換えないといけません。



そして、その書き換えた全ページをサーバーにアップロードしないといけません。
その度に、サーバーには負荷をかけますし、第一、時間も手間もかかります。

テンプレートをincludeすることで、その時間と手間を省けます。
(テンプレートのアップロードだけでOKです)

スポンサーリンク

換え損ねと書き換え忘れがない

テンプレートを include で読み込むと、テンプレート部分の変更のし忘れが起きにくいです。

今まで何百回とページ内のテンプレートを書き換えてきましたが、一番の不安は、テンプレートの書き換え損ねと書き換え忘れです。

一生懸命やってるんですが、どう言うわけかたいてい 『 漏れ 』 が出るのです。
ページのテンプレート部分の中には、どうしてかはわからないのですが、少しずつタグやコードが違うもの点在します。

その点在する変更し忘れのページはエラーを吐いたり、レイアウト崩れを起こします。
でも、出来る限りテンプレート化してincludeしてやると、読み込んだテンプレート部分については、変更し忘れが起きにくいです。



確かに、ページ内の include コード自体を変更し忘れる可能性もありますが、毎回毎回、テンプレートを弄る度にそのリスクがつきまとうことに比べると、大したことはありません。

また、includeコード自体を変更することもめったにありません。
ヘテムル から さくらのレンタルサーバ へサーバー移転した時には発生してしまいましたが)

サーバーを変更してinclude用のコードを変更しないといけなかったり、サイトの構造をかなり大幅に変更する時くらいのものです。
(大規模なサイト構造の変化の多くは、テンプレート内で片付いてしまうことが多いです)


サーバー内のファイル容量を減らせる

近年のサーバーの容量は凄まじいですし、転送処理のことを考えますと、サーバー内の全ファイルの容量が多少減った所であんまり変わらないとは思いますが、サーバーの容量が少ない場合は、テンプレート化することで容量を減らせます。


ブログの管理よりも色々と面倒くさくない

WordPress や MovableType はセキュリティの穴が出来やすいです。
また、ハッカーから攻撃されやすいです。


【ショック】セキュリティ警告&ハッキング被害を発見した


ハッキングされたらとても困る場合、セキュリティの穴を監視するために、ハッカーからの攻撃に怯えつつ、日夜ヒヤヒヤしながらブログを観察することになります。

ですが、ファイルの include は WordPress や MovableType ほどのセキュリティ穴はできにくいです。
(includeの書き方さえ気をつければ)


php.cgiでPHPを動かすことのセキュリティの問題を調べてみた


ですので、ブログの機能をそれほど必要としていない場合、またレスポンシブデザインの基礎的な知識がある場合は、外部ファイルテンプレート化した静的サイトの方が楽なのではないかと思います。

サイトをテンプレート化するデメリット

サーバーに負荷をかける

テンプレートを読み込み、そのテンプレートをページ内に埋め込んで、一枚のページとして表示する処理は、サーバーが行っています。

さらに、レスポンシブのためのCSS3media screenの処理も加わると、結構な量の処理がサーバーで行われます。



それらの処理は、新規ユーザーキャッシュを保存しない設定のブラウザでページが表示される度に発生します。

キャッシュの中に保存されている場合は前のデータが残ってますので、サーバーの処理量はそれほどでもないですが、新規ユーザーやキャッシュを保存しない設定のブラウザの場合、処理が発生しますので、その都度サーバーがガリガリ動くことになります。

共有サーバーで、たくさんの同居人がサーバー内にキツキツに詰め込まれている場合、そうやって処理がガリガリかかると迷惑がかかりやすいです。

場合によっては、負荷軽減のためにアクセス制限を食らう可能性もあります。

ページ内の部品をテンプレート化する場合は、できるだけテンプレートファイルをまとめるよう心がけ、ページ内の部品を細かく分割して、たくさんのファイルをincludeするのはやめておいた方が無難です。



なぜ私がそんなことを言うのかと言うと、実際にこれでサーバーに負荷をかけてしまっていたからです。(;´∀`)

とは言え、色々考えてはみたものの、どうしても大きな負荷が避けられない場合は、今よりも性能の良いレンタルサーバーへ移転するか、今のコースよりも上位のコースに鞍替えすると良いです。

資金的には少し大変になってしまいますが、月額千円〜千数百円程度の負担増であれば大丈夫な方は、一度、検討されてみても良いかもしれません。


WordPressの運用に特化したレンタルサーバー『wpXレンタルサーバー』

さくらのレンタルサーバ ビジネス


ツールでCSSが適用できない

<head>内のCSSへのリンクは、URLで書くのが一番無難です。
相対パスだと、リンク切れを起こしてしまう可能性があるため)

もし、<head>内のCSSへのCSSをincludeせずに相対リンクで書く場合、階層によってCSSのファイル指定が異なりますので、小規模のサイトであれば大丈夫だと思いますが、大規模で階層に幅がある場合は、めんどくさいことになりやすいです。
(テンプレート化する前は、CSSのリンク切れでヒーヒー(~O~;)してたのは良い思い出)



<!-- テンプレートで読み込む場合のCSS -->
<link rel="stylesheet" type="text/css" href="http://***.***/style.css">

<!-- ドメインのルートフォルダにCSSファイルとHTMLファイルがある -->
<link rel="stylesheet" type="text/css" href="style.css">

<!-- ドメインのルートフォルダにCSSファイル、一階層下にHTMLファイルがある -->
<link rel="stylesheet" type="text/css" href="../style.css">

<!-- ドメインのルートフォルダにCSSファイル、二階層下にHTMLファイルがある -->
<link rel="stylesheet" type="text/css" href="../../style.css">

でもこの場合、WEB作成用のツールでは表示できないです。
例えば、私が今現在使用中の ホームページ・ビルダー
(現在使用中なのはホームページビルダーの16です)

これは、WEBサイトのサーバー上のCSSファイル読み込めません。
最新のバージョンではできてるかもしれませんが、2016年現在使用中のホームページビルダー16ではできません。
(と言うか、ローカルでの作業中にサーバー上のCSSファイルを読み込めてしまっても怖いわけですが。(;´∀`))

また、ファイル作成・修正・加工中は、include されるテンプレート用のファイルは読み込まれませんので、CSSを充てるときに結構苦労します。

ホームページ・ビルダーでは、右クリックの後 『 スタイルの設定 』 を選択すれば、スタイルを適用するためのウィンドウが開くのですが、CSSをincludeしたり、CSSのファイル設定がURLで指定されていると、スタイルの設定画面からスタイルを適用できませんので、一々手打ちでクラス名を入力し、サーバー上で確認する形になります。
(何気にこれがかなりめんどくさい。(;´_`;))

ちなみに、 ホームページビルダー では、作業するページの横幅を指定できますし、デフォルトで割り当てられているCSSで表示されますので、スタイルの割当は面倒ですが、ページの作成自体が難しくなることはありません。


ホームページビルダーで編集画面の横幅を指定する方法

1. メニューバーの 『 ツール 』 をクリックする
2. 『 オプション 』 をクリックする
3. 『 ターゲットブラウザ 』 タブを選択する
4. 右ボタンの『 追加 』 をクリックする
   (一番下)
5. 『 名称 』『 横幅 』 を指定する

6. 『 OK 』 ボタンをクリックする
7. 先ほど作った設定を選択する

8. 『 OK 』 ボタンをクリックする


テンプレートのファイルサイズが大きくなる

テンプレート外部化されてしまっていると、ついついたくさんのコードやタグをテンプレート内に詰め込んでしまいがちです。

一ページ内に全部突っ込んでいる場合には、入れすぎて膨れ上がったコードやタグに気が付きやすいのですが、テンプレートを外部ファイル化してしまうと、コードやタグがてんこ盛りになっていても、気が付きにくいです。

ですので、外部テンプレートをincludeで読み込む場合は、テンプレートが長くなりすぎないように注意する必要があります。


次ページ

PHPとScriptによるテンプレートファイルの表示の違い

前ページ

【難問解決】 PHPでテンプレートをincludeした


スポンサーリンク