【速い】 SSIでincludeに成功した!【安定】
普段からもっさりした動作のうちのサイトたち。
しかも、503エラーもなかなかゼロにならない。
(大量の503エラーが出る日とゼロの日がある)
そこで、アクセスして頂いたお客さんを逃がさないようを、サイトをできるだけ軽くして、500エラーをゼロかゼロ近くにすべく、再度、サイトの見直しをすることにしてみた。
ところが、色々と考えてみたが、もうすでに手直しできそうなところはやってしまっていたので、ここからさらに大きくサイトを軽くするのは難しいように思われた。
圧縮ができない! を改善する
確かに、Google の PageSpeed Insights で指摘されていた 『 CSSやHTMLファイルの圧縮 』 はまだ残っていた。
(CSSの縮小など、他にも若干やることは残っていた)
でも、やろうとはしたのだが、どうしても上手くできなかった。
何故か圧縮が反応しなかったり、反応しても500サーバーエラーが出てしまい、ストップしてしまうのだ。
さくらのレンタルサーバは Apacheの圧縮機能(mod_deflate)には対応しているようだった。
なので、うちのサイトが圧縮ができないのはどう考えてもおかしい。
そこで、何が原因で圧縮ができないのか、実験して調べてみることにしてみた。
圧縮実験開始
とりあえず、未使用のドメインを使って、普通のHTMLファイルを使って圧縮が効くかどうか実験してみた。
すると、普通に圧縮することができた。
やはり、さくらレンタルサーバーで圧縮が効くのは確かなようだった。
次に、テンプレートファイルをPHPで読み込んで圧縮が効くかどうか実験してみた。
すると、前に失敗したのと同様、やはり圧縮に失敗した。
どうやら原因はテンプレートファイルをPHPで読み込んでいることにあるようだった。
SSIでIncludeする方法
今の方法(詳しくは【難問解決】 PHPでテンプレートをincludeした)では、ファイルの圧縮に失敗してしまうのだけは確かなようだった。
そこで、別の方法でテンプレートファイルの読み込みをしてみることにした。
そこで私が選んだのが、SSI による テンプレートファイルの読み込み だ。
SSI による テンプレートファイルの読み込みは初めてなのでよくわからなかったが、とりあえずネットで情報を調べつつ、手探りでIncludeしてみることにした。
CGI・PHP・SSI について
とりあえず、うちのサイトは拡張子が *.htm なので、SHTML ファイルでしか動かせないSSIに対処すべく、例のごとく、Apacheの機能を使って HTMLファイルを SHTMLファイルで動かせるように設定することにした。
まず最初に htaccess ファイル に記述したコードがこれ。
AddType text/x-server-parsed-html .html
でも、これではHTMLファイルを SHTMLファイルで動かすことはできなかった。
そこでさらに調べてみると、さくらのレンタルサーバーでは、↓のコードを使わないといけないようだった。
AddOutputFilter INCLUDES .html .htm
さらに、さくらインターネットのヘルプを見て、インクルード用のコードを調べてみた。
テンプレート用のファイルは、色々な階層のHTMLファイルで使う予定だったので、相対パスではまずいので、絶対パスで読み込める 『 include virtual 』 を使うことにした。
<!--#include virtual="/www/hogehoge.htm"-->
#htaccessファイルにコードを追加
AddOutputFilter INCLUDES .html .htm
<!-- HTMLファイルにコードを追加 -->
<!--#include virtual="/www/hogehoge.htm"-->
SSIとは
SSIとは、サーバーサイドインクルードの略。
Server
サーバー
Side
〜の側の
Include
含む、含める
ひとことで言うと、使用中のサーバーが『 SHTMLファイルに書かれたコメントのコード 』 の通りに、あれやこれやと 『 実行 』 してくれると言う便利機能。
サーバーがSSIを使えるように設定していないとSSIは使えないので、サーバー契約する前に、契約したいレンタルサーバーでSSIが使えるかどうかをチェックする必要がある。
(格安レンタルサーバーの場合、SSIが使えない可能性もあるので要注意!)
SSIのコマンドとして書かれてあるのは 『 コメント用のコード 』。
なので、普通のHTMLタグとはちょっと違う。
コードやタグばっかりだと何のコードか何のタグだかわかりにくくなるので、HTMLファイルには、このような形でコメントを入れられるようになっている。
<!-- サイドバーここから -->
<div id="sidebar">
<!-- プロフィール -->
<h5>プロフィール</h5>
<p>名前はかつぶしおと言います。<br>
『 勝つ 』 と前のニックネームの 『 塩 』 から名前をとりました。</p>
<!-- 広告 -->
<script>hogehoge</script>
</div>
<!-- サイドバーここまで -->
そのコメント用のタグにSSIを動かすためのコードを入れてやれば、サーバーがコードに書かれてある命令通りに実行してくれる。
(サーバーにSSIがインストールしてある場合のみ)
<!-- 例 -->
<!--#include virtual="/www/hogehoge.html"-->
<!--#include virtual="/www/hogehoge.html"--> の場合は、『 /www/hogehoge.html(絶対パスで書かれてある) 』 のファイルを『 読み込め 』 と言う命令が、コメント用のタグの中に入っていて、それをサーバーが読み取って実行する。
include
含めろ
virtual
実際の
( この場合は絶対パスと言う意味 )
ちなみに、セキュリティ的に少し問題があり、現在では非推奨のサーバーが多いようだが <!--#include file="../www/hogehoge.html"--> と言うのもある。
こちらは 『 相対パス 』 でのテンプレートやファイルの読み込みになる。
相対パスなので、階層が変わると読み込めなくなるので、テンプレートファイルの読み込みには向かない。
絶対パス
<!--#include virtual="/www/hogehoge.html"-->
相対パス
<!--#include file="../www/hogehoge.html"-->
次ページ
前ページ
広告
- 【紆余曲折】 サイトをテンプレート化することを決意した
- 【難問解決】 PHPでテンプレートをincludeした
- サイトをPHPでテンプレート化するメリットとデメリット
- PHPとScriptによるテンプレートファイルの表示の違い
- Scriptでサイトをテンプレート化する方法とそのデメリット
- 【使い回し】 複数サイトのテンプレートの共有化について
- 【こんなはずでは】PHPやScriptを使ったテンプレートの注意点
- 【簡単メンテでも問題あり?】<head></head>内をincludeする
- 【静的】 Wordpress とテンプレート化したPHPサイトの違い 【動的】
- 【違う】ホームページビルダー16の付属テンプレートについて【そうじゃない】
- 【速い】 SSIでincludeに成功した!【安定】
- 【難問解決】 SSIのインクルードで圧縮できるか実験してみた
- jQuery で外部ファイルを読み込んだ時に文字化けするのを解消する方法