HTTP レスポンスにある "Expires" ヘッダを上手く活用することで、サーバへの HTTP 問合せを減らし、サイトの表示を高速化することができます。特にバナー画像やアイコンなど、頻繁に変更されることの無いファイルについては、Expires ヘッダの活用によって、サイト表示の高速化やサーバ負荷の軽減が期待できます。
ところで、さくらインターネットのレンタルサーバ(スタンダードプラン)では、サーバに必要なモジュール(mod_expire)がインストールされておらずこの恩恵に預かれません。そこで、特定のディレクトリ以下にある画像ファイルについては、mod_rewrite と CGI を用いて Expires ヘッダを送出するようにしてみました。サーバを軽くする目的のために CGI を使うあたり、何か違うような気がしますが気にしないでおきましょう。
/site ディレクトリ以下にある画像ファイルについて、mod_rewrite モジュールを利用して処理を expires.cgi に任せるように指示を書き足します。
RewriteCond %{REQUEST_FILENAME} /site/.+.(jpe?g|gif|png)$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^.* /site/expires.cgi [PT,L]
リクエストされたをファイルを開いて、その内容を返すだけの CGI スクリプトです。コンテンツの送出前に Expires ヘッダを追加しています。
ページで使用しているバナー画像や背景画像などについて、サーバへの問合せを行わなくなるのでページ表示の体感速度がかなり向上しました。反対に初回は全ての画像ファイルの読み込みに対して CGI が動作するので幾分表示が遅くなります。リピータの多いサイトや 1 ビジタあたりの訪問ページ数が多いサイトではその効果が大きく期待できます。