画像をキャッシュ

画像を使うことにしたので、
Apache の mod_expiresモジュール
http://httpd.apache.org/docs/2.2/ja/mod/mod_expires.html
を使いコンテンツの有効期限を長く設定することにより、クライアントでキャッシュしてもらうように設定。

インストール

sudo /usr/sbin/a2enmod expires
sudo /usr/sbin/apache2ctl restart

画像サーバの設定ファイルに以下を追加

    # cache control
    ExpiresActive On
    ExpiresByType image/png "access plus 1 month"


画像取得時にサーバから送られてくるヘッダーを見るとちゃんと、1ヶ月後になっていた。

Expires: Sat, 27 Jun 2009 12:40:03 GMT

しかし、キャッシュした画像があるページをリロードすると

HTTP/1.x 304 Not Modified
Date: Thu, 28 May 2009 12:47:24 GMT
Server: Apache
Connection: Keep-Alive
Keep-Alive: timeout=15, max=67
Etag: "24d39-1d3-b04f9000"
Expires: Sat, 27 Jun 2009 12:47:24 GMT
Cache-Control: max-age=2592000

のようにサーバから304を返してた!
そもそもアクセスすら発生しないと思ってた。


でも、リンクからアクセスを行うと画像をリクエストは発生しなかった。
ブックマークからのアクセスでも画像へのリクエストは発生しなかった。
シフトを押しながらF5では、当然だけど画像をキチンと返してた。

リロード   304
SHIFT + リロード 200
ブックマークから リクエストなし
リンクから リクエストなし

こんな感じ。ちなみにffox3