CakePHP IEでの「ページの有効期限切れ」対策

notoです。

IEで「戻る」ボタンを押した際に、Webページの有効期限が切れています。と表示される場合の対策です。

session_cache_limiterでHTTPヘッダーを制御します。 これだけです。

1
session_cache_limiter('private, must-revalidate');

どうしてWebページの有効期限が切れていますと表示されるのか、原理がまだ僕自身よくわかっていないので、追って勉強していきます。

ちなみに、CakePHPで、ブラウザを閉じた際にログアウトさせるには、controllerのdisableCacheを利用することで、実現させることは可能です。

1
2
3
public function beforeRender(){
  $this->disableCache();
}

disableCacheは何をしてるかというと、これもHTTPヘッダーを制御しています。

1
2
3
4
5
6
7
function disableCache() {
  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  header("Cache-Control: no-store, no-cache, must-revalidate");
  header("Cache-Control: post-check=0, pre-check=0", false);
  header("Pragma: no-cache");
}

他に何かうまい手があったら、是非是非教えて下さい。

参考

session_cache_limiter

Comments