作成日: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」以外の拡張子のファイルを対象にするなら拡張子を追加する。