Cache-Controlの履歴
ブラウザにキャッシュ方法を指示するHTTPヘッダだが、よくわからない…。
詳しいまとめ。
http://www.ibm.com/developerworks/jp/web/library/wa-aj-cache...
どうやらこの4つは設定によって更新タイミングが変わるらしい。
- URLの直打ち
- リロード
- リンク
- 戻る
PHP
session_start()を使うと自動で色んなヘッダ書き出してくる。
private_no_expire, max-age
自力で調べた結果、これが一番良い気がする。IEはまだ見てない。
フォームの入力が戻った時にも保持され、更新直後のキャッシュは残らない。
session_cache_limiter('private_no_expire, max-age=0');
If-Modified-Sinceのみ。ExpiresもCache-ControlもLast-modifiedも出力されない。
でも何故かうまく動作する。
If-Modified-Since: Sat, 20 Feb 2010 16:24:36 GMT
private_no_expire
session_cache_limiter('private_no_expire');
Cache-ControlとLast-Modifiedが出力
この方法が良いという記述をよく見かけた。確かにフォームのキャッシュは有効になるが、更新後にキャッシュがクリアされずに残る問題がある
Cache-Control: private, max-age=10800, pre-check=10800 Last-Modified: Sat, 20 Feb 2010 16:24:36 GMT
private
session_cache_limiter('private');
Expires、Cache-Control、Last-Modifiedが出力
Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: private, max-age=10800, pre-check=10800 Last-Modified: Sat, 20 Feb 2010 16:24:36 GMT
public
session_cache_limiter('public');
If-Modified-Since、Expires、Cache-Control、Last-Modifiedが出力
If-Modified-Since: Sat, 20 Feb 2010 16:24:36 GMT Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: public, max-age=10800 Last-Modified: Sat, 20 Feb 2010 16:24:36 GMT
private_no_expire, must-validate, max-age
session_cache_limiter('private_no_expire, must-validate, max-age=0');
If-Modified-SinceもExpiresもCache-ControlもLast-modifiedも出力されない。
no-cache
何も指定せずにsession_startを呼び出した場合。
If-Modified-Sinceはなく、no-cacheが付く。必ずリロードされる。
Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache
他のサイトはどうなってるか?
Firefox3.5.8で確認。
mixi
mixiはすべてno-cacheになってる。でも何故かフォームは保持してる。
HTMLで指定してるわけでもないし、JavaScriptも使っていない。どうやってるのか謎。
と思ったら、ホームなどはno-cacheだが、日記作成のところだけレスポンスコードの前にCache-Control: max-age=0が付加されていた。
Cache-Control: max-age=0 HTTP/1.1 200 OK ... Cache-Control: no-cache Pragma: no-cache
f
OpenPNE3
やはりmixiと同じで日記作成のところで Cache-Control: max-age=0 している。
アメブロ
戻ったら消えました
lang-8
Cache-Control: max-age=0 Cache-Control: private, max-age=0, must-revalidate
ただ日記を書くには最初のmax-ageはなかった。
はてなダイアリー
特にキャッシュ関係のヘッダはなし。
しかし、何故かタイトルを残して本文が消えました。
JavaScriptも関係している?
Livedoor Blog
ブログを書くで戻って進んでも残っている。
ブログを書くのみmax-ageが付加。
Cache-Control: max-age=0 Pragma: no-cache Cache-Control: private
戻って進んだら消えました
Pragma: no-cache Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0 Expires: Tue, 31 Mar 1981 05:00:00 GMT