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行が特に重要です。
コメント