PHPで動的生成したページを絶対にブラウザにキャッシュさせない方法

php・MySQL・Web開発

PHPで動的に生成しているサイトがあるのですが、ブラウザ(Chrome)がキャッシュしたものが消えてくれず、「Shift+F5」で強制クリアしないと更新されない状況に困っていました。

<html lang="ja" manifest="">
 <head>
 <meta charset="utf-8">
 <meta http-equiv="Pragma" content="no-cache">
 <meta http-equiv="Cache-Control" content="no-store">
 <meta http-equiv="Expires" content="0">

出力されるHTMLのヘッダに上記を設定してもダメだった。
「Shift+F5」を押さないと更新されない。

cssの末尾に無意味なクエリーをつけるとか、いろいろ試行錯誤してみましたが、どれもダメだった。

解決策を結論から書くと下記。

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
$time_newest = 1484332405;//適宜任意の(最新の)日付けとなるタイムスタンプを
header( "Last-Modified: " . gmdate( "D, d M Y H:i:s", $time_newest ) . " GMT" );

困り果てた結果、上記処理をPHPスクリプトの先頭で実行したら、ブラウザにキャッシュされる問題が解決しました!

最初の3行が特に重要です。

コメント

タイトルとURLをコピーしました