キャッシュとはなんでしょうか。
プログラム開発をしていると、
「キャッシュが効いてるせいだ」
「キャッシュをクリアすればいい」
など、聞くこともあると思います。
今回はそんなキャッシュのお話を以下の内容でお話しします。
【基本】キャッシュとは
【実践】キャッシュをクリアする方法
【応用】キャッシュさせない方法
ぜひ、最後まで読んで頂けると嬉しいです。
キャッシュについて
まず、キャッシュとは何かを学んでいきましょう。
キャッシュってどんなもの?
キャッシュとは手元におく原本コピーのようなものです。
手元とは、ブラウザなどを指します。
一度読み込んだページを読み込む為に5秒かかったとします。
また、同じページを読みに行くと5秒かかりますが、手元にコピーがあるとそれを参照できる為早くページが表示できます。
とても便利な機能ですね。
キャッシュクリアが必要な理由
次に、便利なキャッシュもクリアしないと問題が発生する場合があるというお話をします。
冒頭でもお話した通り、「キャッシュをクリア」という単語はWeb開発現場ではよく聞くワードです。
このワードが発せられる時は、サーバーのファイルを更新して変更をしたのに、ブラウザ上で変更が確認できない場合が多いです。
ここまで読んで頂いた皆さんには、原因はなんとなくお分かりですよね。
新しく編集したファイルに原因があるわけではなく、キャッシュを読みにいくことが挙げられられます。
解決策はキャッシュをクリアする事。
「キャッシュが効いている」「キャッシュを消せ」という言葉はそういう意味なのです。
キャッシュは、ブラウザによりますがキャッシュの保存容量によって自動的に消されます。
ただ、それを待つ必要はありません。
クリア方法もきちんと存在しますので、次の章でお話していきます。
キャッシュをクリアする
それでは、キャッシュをクリアする方法をお伝えします。
ブラウザキャッシュをクリア
ブラウザによって違いますが、殆どが閲覧履歴のメニューから削除できると思います。
ここではChoromeでの削除方法を紹介します。
【Chorome】
画面右上のたて三段点をクリック
↓
「その他のツール」をクリック
↓
「閲覧履歴を消去」をクリック
↓
消去する期間を設定して「キャッシュされた画像とファイル」をチェック
※他の履歴を消したくない場合は他の項目のチェックを外す
↓
「閲覧履歴データを消去する」をクリック
これでクリアが完了します。
スーパーリロードをする
ブラウザキャッシュのクリア方法をご紹介しましたが、面倒だな!と思った方。
そんな方におすすめなのは、ブラウザキャッシュを読み込まずに表示する方法です。
スーパーリロードと言います。
方法はMacとWindowsで操作キーが違います。
【Mac】
command + R
もしくは
command + R + Shift
【Windows】
Ctrl + F5
この方法で、キャッシュを読まず画面を表示できます。
ただし、キャッシュはクリアされていませんので注意が必要です。
キャッシュをさせない方法
PHP側からブラウザのキャッシュをクリアする事はできません。
そのため、色々な事情からはじめからブラウザキャッシュをさせない方法を取りたい方もいるでしょう。
最後にその方法をご紹介します。
記述は、方法はPHPファイルに以下の記述を書きます。
<?php header("Cache-Control:no-cache,no-store,must-revalidate,max-age=0"); header("Cache-Control:pre-check=0",post-check=0,false); header("Pragma:no-cache");
[su_spacer=20]
全体的にheader情報にキャッシュをさせないという命令をするという意味ですが、簡単に内容を説明します。
no-storeは、レスポンスやリクエストをキャッシュさせてはいけない
no-cacheは、サーバー側の確認なしの再利用禁止
max-ageは、キャッシュの有効期限(秒)、0なので有効な期間はないという意味
インターネットで調べていると、以下のような記述も出てきますが、一部ブラウザではキャッシュされてしまう事象が報告されていました。
header("Cache-Control: no-cache"); header("Pragma: no-cache");
[su_spacer=20]
まとめ
本日はPHPのキャッシュのクリアについてお話してきました。
折角時間をかけて修正したプログラムが反映されない!
焦りますが、プログラムを見直す前にキャッシュを疑ってみましょう。
また、別のサーバーに反映されていた、という事もよくあります。
焦っても良いことはないので、落ち着いて対応しましょう。
それでは、また。