Apache2.2 PHPで生成の画像・JS・CSSのブラウザキャッシュ
ブログ | 2010/2/20 01:06
以前に「PHPで生成したCSSなどをキャッシュする。」
http://www.rottel.net/kuwa/3126
というメモを書いたのだけれど、昨日ふとブラウザキャッシュが効いてないことに気がつきました。なんてことだ。(ブロードバンドのせいにしといてみる)
それに気がつくと、帯域を使いすぎている原因がソレだということで、いろいろ合点がいきました。
awstatsで見ると、去年の8/25からガツンと転送量が増えていて、ちょうどそのころ新しいmacminiにメインサーバーを交換したことから、その時にapache2からapache2.2にしてたんじゃないかと思い当たります。
今回検索してみたら、apache2.2でキャッシュ関係が強化されたのは、常識みたいです。
まず、下記ページを参照して、httpd.confにExpires関係を追加
http://bali.sakura.ne.jp/サーバー/apache-cache-contr...
で、PHPの出力でキャッシュを有効にする記述
例えば、jpegの場合は、
ということで、様子見中。
なんとなく分かったこと、
ExpiresByType で設定すると、phpでのjs出力などには、headerにmax-ageが入るけれど、普通のtest.jsなどには入らない。
普通のファイルには、FilesMatchでファイル名を選び、
ということで、更に様子見。
変な挙動がでていたら、リロードしてみて下さい。
http://www.rottel.net/kuwa/3126
というメモを書いたのだけれど、昨日ふとブラウザキャッシュが効いてないことに気がつきました。なんてことだ。(ブロードバンドのせいにしといてみる)
それに気がつくと、帯域を使いすぎている原因がソレだということで、いろいろ合点がいきました。
awstatsで見ると、去年の8/25からガツンと転送量が増えていて、ちょうどそのころ新しいmacminiにメインサーバーを交換したことから、その時にapache2からapache2.2にしてたんじゃないかと思い当たります。
今回検索してみたら、apache2.2でキャッシュ関係が強化されたのは、常識みたいです。
まず、下記ページを参照して、httpd.confにExpires関係を追加
http://bali.sakura.ne.jp/サーバー/apache-cache-contr...
ExpiresActive On
ExpiresByType text/css "access plus 100 days"
ExpiresByType application/x-javascript "access plus 100 days"
ExpiresByType image/gif "access plus 100 days"
ExpiresByType image/jpg "access plus 100 days"
ExpiresByType image/jpeg "access plus 100 days"
ExpiresByType image/png "access plus 100 days"
<FilesMatch ".(ico|jpg|jpeg|png|gif|js|css|swf|mov)$">
Header set Cache-Control "max-age=8640000"
</FilesMatch>
で、PHPの出力でキャッシュを有効にする記述
例えば、jpegの場合は、
<?phpブラウザから、If-Modified-Sinceがリクエストされた場合は、304だけを返して終了させてしまうのである。
if(array_key_exists("If-Modified-Since", apache_request_headers())){
header("HTTP/1.1 304 Not Modified");
exit();
}
header('Content-Type: image/jpeg');
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
?>
ということで、様子見中。
▼追記 2010/2/20 14:48
ExpiresByType text/plain “access plus 30 days”この辺りを入れると、PHPでのhtml出力もheaderにmax-ageが入り、キャッシュされてしまったので、削除。
ExpiresByType text/html “access plus 30 days”
なんとなく分かったこと、
ExpiresByType で設定すると、phpでのjs出力などには、headerにmax-ageが入るけれど、普通のtest.jsなどには入らない。
普通のファイルには、FilesMatchでファイル名を選び、
Header set Cache-Control "max-age=8640000"で、 headerにmax-ageを入れる。
ということで、更に様子見。
変な挙動がでていたら、リロードしてみて下さい。
▼追記 2010/2/22 22:37
転送量、まったく改善されてない。なぜだ。

リンク元
- http://tw.9wash.com/ (2)
- http://www.google.co.jp/search?hl=ja&q=Expir... (2)
- http://www.google.co.jp/search?q=apache+%E3%83%9... (2)
- http://www.google.co.jp/search?q=Apache%E3%80%80... (2)
- http://www.google.co.jp/search?q=%E3%83%96%E3%83... (2)
- http://www.google.com/search?q=php+%e7%94%bb%e5%... (2)
- http://www.google.co.jp/ (1)
- http://www.google.co.jp/reader/view/ (1)
- http://www.google.co.jp/search?hl=ja&source=... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://www.google.co.jp/search?hl=ja&source=... (1)
- http://www.google.co.jp/search?hl=ja&rlz=1T4... (1)
- http://www.google.co.jp/search?q=apache++%E3%83%... (1)
- http://www.google.co.jp/search?hl=ja&q=%22ap... (1)
- http://www.google.co.jp/search?hl=ja&q=apach... (1)
- http://www.google.co.jp/search?num=100&hl=ja... (1)
- http://www.google.co.jp/search?hl=ja&source=... (1)
- http://www.google.com/search?hl=ja&rls=com.m... (1)
- http://www.rottel.net/flipflop/68346 (1)
- http://www.google.co.jp/search?q=Cache-Control+m... (1)
- http://www.google.co.jp/search?q=%EF%BC%AA%EF%BC... (1)
- http://www.google.co.jp/search?hl=ja&q=apach... (1)
- http://www.google.co.jp/search?hl=ja&q=%E3%8... (1)
- http://www.google.co.jp/search?hl=ja&rlz=1B3... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://s.luna.tv/search.aspx?client=lunascape&am... (1)
- http://www.google.co.jp/search?hl=ja&q=apach... (1)
- http://www.google.co.jp/search?q=PHP+header+%E3%... (1)
- http://www.google.co.jp/search?hl=ja&rlz=1B3... (1)
- http://www.google.com/search?num=100&hl=ja&a... (1)
- http://www.google.com/search?hl=ja&source=hp... (1)
- http://www.google.co.jp/search?q=%E3%82%AD%E3%83... (1)
- http://www.google.co.jp/search?hl=ja&source=... (1)
- http://www.google.com/search?client=opera&rl... (1)
- http://www.google.co.jp/search?client=safari&... (1)
- http://www.google.co.jp/search?q=apache+php+%E8%... (1)
- http://www.google.co.jp/search?sourceid=navclien... (1)
- http://www.google.co.jp/search?rlz=1C1CHMV_jaJP3... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://www.google.co.jp/search?q=css+%E3%83%96%E... (1)
- http://www.google.co.jp/search?hl=ja&lr=&... (1)
- http://www.google.co.jp/search?hl=ja&q=Apach... (1)
- http://www.google.co.jp/search?hl=ja&q=Expir... (1)
- http://www.google.co.jp/search?hl=ja&rlz=1C1... (1)
- http://www.google.co.jp/search?hl=ja&lr=&... (1)
- http://www.google.co.jp/search?hl=ja&rlz=1C1... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://www.google.co.jp/search?hl=ja&lr=&... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://www.google.co.jp/search?q=apache2.2+%E3%8... (1)
- http://www.google.co.jp/search?q=swf%20%E3%82%AD... (1)
- http://www.google.co.jp/search?sourceid=navclien... (1)
- http://www.google.co.jp/search?hl=ja&q=apach... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://www.google.co.jp/search?sourceid=navclien... (1)
- http://www.google.co.jp/search?hl=ja&lr=&... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://www.google.co.jp/search?q=php+%E7%94%BB%E... (1)
- http://www.google.co.jp/search?hl=ja&q=apach... (1)
- http://www.google.co.jp/search?q=css+%E3%83%96%E... (1)
- http://www.google.co.jp/search?sourceid=navclien... (1)
- http://www.google.co.jp/search?hl=ja&lr=&... (1)
- http://www.google.co.jp/search?hl=ja&lr=&... (1)
- http://www.google.co.jp/search?hl=ja&rls=com... (1)
- http://www.google.co.jp/search?hl=ja&q=%E3%8... (1)
- http://www.google.co.jp/search?q=ExpiresByType+a... (1)
- http://www.google.co.jp/search?sourceid=navclien... (1)
- http://www.google.co.jp/search?q=Apache2.2+%E3%8... (1)
- http://www.google.co.jp/search?q=js+apache+%E3%8... (1)
- http://172.16.100.8:15871/cgi-bin/blockOptions.c... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://www.google.co.jp/hws/search?hl=ja&q=%... (1)
- http://www.google.co.jp/search?q=ExpiresByType+t... (1)
- http://www.google.co.jp/search?num=100&hl=ja... (1)
- http://www.google.co.jp/search?hl=ja&q=css+%... (1)
- http://www.google.co.jp/search?hl=ja&q=css+%... (1)
- http://www.google.co.jp/search?hl=ja&safe=of... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://www.google.co.jp/search?q=CSS+%E3%82%AD%E... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://www.google.co.jp/search?hl=ja&newwind... (1)
- http://www.google.co.jp/search?hl=ja&source=... (1)
- http://www.google.co.jp/hws/search?q=header+cach... (1)
- http://www.google.co.jp/search?hl=ja&q=Apach... (1)
- http://www.google.co.jp/search?hl=ja&q=js+cs... (1)
- http://www.google.co.jp/search?hl=ja&source=... (1)
- http://www.google.co.jp/search?as_q=ExpiresByTyp... (1)
- http://www.google.co.jp/search?sourceid=chrome&a... (1)
- http://www.google.co.jp/search?client=safari&... (1)
- http://www.google.co.jp/search?hl=ja&client=... (1)
- http://search.goo.ne.jp/web.jsp?from=query&M... (1)
- http://www.google.com/search?sourceid=mozclient&... (1)
- http://www.google.com/search?hl=ja&q=expire+... (1)
- http://www.google.co.jp/search?q=css+%E3%82%AD%E... (1)
- http://www.google.co.jp/search?sourceid=chrome&a... (1)
- http://www.google.co.jp/search?hl=ja&rlz=1B3... (1)
- http://www.google.co.jp/search?hl=ja&source=... (1)
- http://www.google.co.jp/search?sourceid=navclien... (1)
- http://www.google.co.jp/search?hl=ja&rlz=1T4... (1)





