オーダーメイドコース
icon
icon

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列が変化しますので毎回ダウンロードしているのが確認できます。

この記事を監修してくれた方

大網 清和(おおあみきよかず )
現在は派遣スタッフとして Laravel で大手ポータルサイトの開発業務をしています。

プログラム歴は長く中学生の頃から始めて35年くらいになります。古くは BASIC、C、COBOLなどを経験し SQL を集中的に使っていた時期もあります。
Web の開発はまだ2年位とあまり長くは無いですが、プログラミングの楽しさを伝えられたら良いなと思っています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。