とある日の妄想

- PHP・キャッシュ対策考 -

何気ない日常にふと思いついた世迷言をつづるブログ

 

rss-feedRSSフィード

■携帯版はこちら
http://blog.toaruhi.net/m/

携帯サイトQRコード

ブログ内検索

キーワード

 

※検索エンジンで検索した情報が見当たらない場合にご利用ください。

新着記事

カテゴリ一覧

外部リンク

創作物の規制/単純所持規制に反対する請願署名市民有志

作者について

2007年04月05日(木)
PHP・キャッシュ対策考
Webプログラミング
Webアプリ作ってるとキャッシュに悩まされることが結構ある。

まずPHPの場合は、session_chache_limiterでキャッシュを
残すか残さないかの設定をする。

・キャッシュを残さない設定
session_cache_limiter("nocache");

・キャッシュを残す設定
session_cache_limiter("private_no_expire");

キャッシュに悩まされる原因の1つめは、更新が反映されないというものだ。
これは、キャッシュをブラウザが表示してしまうことによる。
そのため、更新を常に反映したいページはnocacheの設定にするのが基本だ。

nocacheにすると、まったくキャッシュが残らないかといえばそうでもない。

具体的仕様がよくわからないのだけど、nocacheのページへ

・送信メソッド「GET」での画面遷移→キャッシュが残る
・送信メソッド「POST」での画面遷移→キャッシュが残らない

という動作がいくつかのブラウザで現実に起こっている。

なので、nocacheに指定したページでも、リンクなどから移動する場合は
urlの末尾にランダムな文字列を付加して新しいURLとブラウザに認識させ、
WEBページをサーバに取りに行かせるようにしないと、キャッシュが表示される。

POST送信されたnocacheのページは、確かにまったくキャッシュされない。
しかし、これはこれで問題を抱えることになる。

ブラウザの「戻る」ボタンやJavaScriptのhistory.back()などで
POST送信で表示されたnocacheのページに戻ろうとすると、
IEなどでは「ページの有効期限切れ」という意味を理解しづらい、
エラー画面のような白いページが表示されてしまう。
これがキャッシュ問題の2つめの悩みだ。

また、ファイルアップロードなどで遷移した画面は強制的にnocacheになり、
ブラウザの「戻る」などで戻ることができない。

ブラウザの戻るボタンの動作はしばしば、二重送信などの不具合の原因にもなる。
サイトによっては、ナビゲーションのないウィンドウを使わせたりしてるね。

新しいWeb(2.0)ではこういう悩みも少なくなってくはずなんだけど。
まだまだ、Webはこれからだな。





トラックバックURL

コメントを投稿する

名前
コメント


Dragon Quest 6

龍が如く4

FF13

THIS IS IT

ときめきメモリアル4

鉄拳6