ラボ > PHPサーバ:.htaccess、ブラウザ:Chrome

Chrome キャッシュのクリア

キャッシュが残って最新の表示になってくれない。

作成日:2017-12-27, 更新日:2018-07-13

基本

利用者に下記のいずれかをしてもらう
・リロード(再読み込み、更新、「F5」)する
・「ctrl」+「F5」する。
・ブラウザ自体の再起動
・ブラウザからキャッシュのクリア
※基本、一つ目をしてダメなら2つ目、3つ目と上から順に。

Chrome

特定の人だけの問題で、Chrome使用なら強力なリロード方法があるみたい。

不特定多数の人にやってもらうのもいいけど、説明する手間を考えると避けたい方法。
「マニュアルを作ればOK」という言う意見もあるけど、マニュアルを作っても・・・読まない人や理解できない人への対応を考えると避けたい。

強力なリロード

名称は知らない。「ctrl」+「F5」は「スーパーリロード」っていう表現を聞いたことはあるけど、下記は知らない。

▼「.htaccess」で設定したリダイレクト・・・このキャッシュもクリアしてくれた。
1.「開発者ツール」を開く(「F12」を押す)
2.ブラウザの「リロードボタン」を長押し→「キャッシュの消去とハード再読み込み」

301リダイレクトのキャッシュ拒否

「.htaccess」が原因だと使えないけど、そうじゃないならいけるかもしれない。

1.開発者ツールを開く(「F12」を押す)
2.「メニュー:Network」を開く
3.「Disable cache」にチェックを入れる

.htaccess

「.htaccess」のリダイレクト設定が絡むと結構面倒。
Chromeなら上述で解決するけど・・・不特定多数の人が相手だと、そういうわけにもいかないので。

▼『「.htaccess」が原因のキャッシュは「.htaccess」でクリアさせる』的なやり方

<Files ~ "\.(html|php|jpe?g|gif|png|css|js|pdf)$">
Header set Pragma no-cache
Header set Cache-Control no-cache
</Files>

キャッシュを使わない

「キャッシュさせない」ではなく「キャッシュを使わない」

▼URLに「?〇〇〇〇」をつける

http://〇〇〇〇/zebra.html?1

※「zebra.html?1」がキャッシュされるので、次回は「?2」、その次は「?3」と変更する。

▼「更新したとき」のみ「キャッシュではなく、ファイルを読み込ませる」なら決めうちでOK

<link rel="stylesheet" href="hoge.css?1" type="text/css" />

※「hoge.css」を更新するたびに「?1」を「?2」「?3」と変更する。

PHPファイルでCSSなどの読み込み

「?1」の部分を毎回変更させるような仕組みを用意すればいい。

<link rel="stylesheet" href="hoge.css?<?php echo time(); ?>" type="text/css" />

キャッシュさせない

「キャッシュを使わない」ではなく「キャッシュさせない」

.htaccess

そもそもキャッシュを残さない設定にするなら前述しているが、「.htaccess」を使うというのもあり。

<Files ~ "\.(html|php|jpe?g|gif|png|css|js|pdf)$">
Header add Pragma "no-cache"
Header set Cache-Control no-cache
</Files>

※「html|php|jpe?g|gif|png|css|js|pdf」以外の拡張子のファイルを対象にするなら拡張子を追加する。