PHPでページのキャッシュを無効にする方法を現役エンジニアが解説【初心者向け】
初心者向けにPHPでページのキャッシュを無効にする方法について解説しています。CSSを変更したのになかなか反映されずに困ったことはないでしょうか。原因はブラウザによってページがキャッシュされているからです。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
PHPでページのキャッシュを無効にする方法について解説します。実際のコードをもとに解説していきますので、理解を深めていきましょう。
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプPHP/Laravel講座の内容をもとに紹介しています。
今回は、PHPに関する内容だね!
どういう内容でしょうか?
PHPでページのキャッシュを無効にする方法について詳しく説明していくね!
お願いします!
ページのキャッシュとは
キャッシュ機能は、頻繁にアクセスする可能性のあるデータをすぐに読み出せる場所に保存して実際のデータを取得せずに済ませて高速化を図る手法です。ページとは、Webページのことを指します。
つまりWebページをWebサーバーから取得しないでどこかに保存しておいたHTMLを利用する仕組みです。
保存する場所は、ブラウザがローカルPCに保存する場合もあれば、Webサーバーへの経路の途中にキャッシュ サーバーを設置してあることもあります。
このためWebサーバーで内容に変更が有っても即時にブラウザに反映しないことがしばしば発生します。リアルタイム変更内容を反映するために、直接Webサーバーからデータを取得したい場合があります。
そのような場合、キャッシュが無効になる方法を使用します。
ページのキャッシュを無効にする書き方
ページがキャッシュされる理由は毎回取得しなくてもレスポンス内容が変わらないと推定しているからです。キャッシュを無効にするには、レスポンス内容が違う可能性があることをブラウザに推定させれば良いことになります。
WebページにはURLがありますが、URLが毎回違っていれば内容が違う可能性が出てきます。
そのためにクエリパラメータを利用します。
クエリパラメータとは、URLのエンドポイント(ドメイン/パス)の後ろ ? で区切って書く文字列です。
通常は Web サーバへ追加のデータを送るために使われます。このパラメータは余分に付けても無視することができますので、乱数を付けて毎回違うURLを指定すれば同一のエンドポイントでもキャッシュが効かなくなります。
[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは
実際に書いてみよう
今回はuniqid()関数を利用してURLの後ろに重複しないパラメータを付加しています。重複しなければ乱数を利用しても大丈夫です。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ホーム</title> </head> <body> <img src="saru.png"><!-- キャシュされる --> <img src="inu.png?<?= uniqid() ?>"><!-- キャッシュ無効 --> </body> </html>
実行結果
ブラウザで再読み込みした後にデベロッパーで確認します。
saru.pngはサイズ列に(from memory cache)と表示されていてキャッシュされていることが確認できます。
inu.pngは再読み込みするとtime列が変化しますので毎回ダウンロードしているのが確認できます。
この記事を監修してくれた方
大網 清和(おおあみきよかず ) プログラム歴は長く中学生の頃から始めて35年くらいになります。古くは BASIC、C、COBOLなどを経験し SQL を集中的に使っていた時期もあります。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。