PHP5 + IE8の環境にて開発していて、ブラウザの「戻る」ボタンを押したときに、
「有効期限が切れています」と表示されて、画面が戻れないことがあった。
これは、php.iniのcache_limiterの設定がデフォルトでnocacheになっているから(のはず)
つまり、「ページはキャッシュしなくていいからなー」と指示されているので、
ブラウザの戻るボタンを押してもキャッシュしていないので表示できないということ。
で、ググるとたくさん同じ現象のページが表示されます。
今回はSymfony1.4のFWで開発していたので、factories.ymlに、
session_cache_limiter : none
と追加してあげればOK
今度は「キャッシュの期限は設けなくていいからなー」と指示しています。
PHPのメソッドを使うなら、session_cache_limiter('none')としてあげればOK
ちなみに公式リファレンスにnoneというパラメータは存在しない。
ちょっと調べてみた感じ、用意されている以外の何かを指定してもOKらしい。。
で、ここまではどこでもありうるお話です。
実際、上記を追記したところで戻るボタンの挙動もOKになりました。
が、他部署から、「戻るボタン押したら検索条件が初期化されちゃいましたよ!」とクレームが。
いやー、そんなはずないんですけどね。。
で、調査していると、どうやら10分くらい画面を放置してから戻るボタンを押すと、初期化される模様。
もうこの時点でプログラムの影響ではないと区切りをつけ、ブラウザの依存である路線を探る。。
で、判明。
ブラウザのインターネットオプションから、
全般タブの閲覧の履歴の設定⇒「保存しているページの新しいバージョンがあるかどうかの確認」
で、「確認しない」を選択する。
デフォルトだと、「自動的に確認する」になっているらしく、
このおかげで、何分かたつとサーバーに問い合わせて表示しているページが古くなっていないかを
判別してくれるありがたい機能。
最後に言わせてもらうと、
「これだからブラウザ依存の機能って使いたくないんだよ。。」