PHP:キャッシュ問題について。

| | コメント(0) | トラックバック(0)
まず結論から言うと、PHPで作るWebアプリケーションは、
session_cache_limiter("none");
を設定すべきである。

・・・・・・・・・・・・・・・・・・・・

PHPでフォームを設置しPOST送信するページを作成する。
「送信」ボタンで次の確認画面をjひょうじし、さらに「実行」ボタンで処理をし完了画面を表示したい場合。

・この完了画面でブラウザの戻るボタンを押して確認画面に戻りたいとき
・確認画面でブラウザの戻るボタンを押してフォーム記入画面に戻りたいとき

に、Firefoxであれば

「このページを表示するにはフォームデータを再度送信する必要があります。」

というダイアログがいちいち出てきてしまったりする。
場合によってはフォームがまっさらにリセットされてしまう。
IEでも同じように白いページが表示され、ページを更新しなければいけなくなったりして、煩わしい。

ここで、こういう表記が出ないようにする&フォームの内容を保持する方法として、PHPの session_cache_limiter() を使う。

php.iniでも設定できるが、この設定はデフォルトでは

session_cache_limiter("nocache");

で、キャッシュしない設定になっている。
つまり、PHPなので動的にページを生成するだろうからキャッシュを残さず常に最新の情報をサーバから読み込ませようとしている。
しかし、これがダイアログ問題を引き起こしている張本人。

逆に、キャッシュするように設定するとする。たとえば、

session_cache_limiter("private_no_expire");

これではキャッシュが残りすぎて、古いページを参照してしまう。
しかも!Firefoxであれば問題ないが、IEだとF5キーを押すなどしてブラウザで更新の操作をしてでさえ、古いページを表示する!これはひどい・・・

そこで、解決法が冒頭に言ったように、

session_cache_limiter("none");

と設定すること。
これは、キャッシュコントロールを使わない、という意味。これで全て解決!

 


トラックバック(0)

このブログ記事を参照しているブログ一覧: PHP:キャッシュ問題について。

このブログ記事に対するトラックバックURL: http://iuc.didit.jp/cgi/mt4/mt-tb.cgi/23

コメントする