コーディングの困ったを解決

【キャッシュ更新を強制する】3つの手法(html)

キャッシュの更新を強制する方法3選

皆さんはこういう経験はありませんか?

ニャンコ
ニャンコ

サイトの修正が終わったので、確認お願いします!

了解です。どれどれ。。。
あれ? 直ってないですよ?

ワンコ
ワンコ
ニャンコ
ニャンコ

ええええっ! マジですか?

たとえば、サイトの修正を終わらせて上司や先方に報告をします。
ですが、「修正されていなかったですよー」などと言われたことってありませんか?

そのほとんどはブラウザに残っているキャッシュが原因です。

一度キャッシュを無効化し、新たに更新したファイルを読み込ませる方法を解説します。
これでもう二度手間になることはありません。

ブラウザのキャッシュをクリアする方法

まずは、各ブラウザのキャッシュをクリアする方法です。

ブラウザの設定から削除

各ブラウザごとにキャッシュをクリアする方法は違いますが、ほとんどは「設定」画面などから、閲覧履歴の削除といった項目がありますので、そちらから削除できます。

ただ、毎回そのような操作をするのはめんどくさいので、次のショートカットを使いましょう。

スーパーリロードでキャッシュをクリア

スーパーリロードとは通常の更新とは違い、キャッシュを削除して再読み込みする機能です。
こちらもショートカットキーはブラウザごとに異なります。

代表的なブラウザのショートカットを記載します。

Chromeのキャッシュをクリア

shift + F5キー

Firefoxのキャッシュをクリア

ctrl + F5キー

Safariのキャッシュをクリア

shift + F5キー

webブラウザのキャッシュを削除する

パラメータを追加してキャッシュ更新を強制する

ただ上記の方法だと、上司や取引先にわざわざ

「ブラウザのキャッシュ消してから見てください!」

と言わなければなりません。

PCに詳しくない方だと「なんですか?キャッシュって」ともなりかねませんし、そもそもサイトを見に来る一般のお客さまはいちいちブラウザのキャッシュ消してからサイト見ないですよね

なのでこちらで強制的に再読み込みさせましょう

CSSやimgにパラメータを追加する

キャッシュを無視して再読み込みさせる方法が、CSSや画像にパラメータを追加する方です。
パラメータとは簡単に言うと、アマゾンなどのサイトURLを見てると、「?123」のように?に続いて英数字が並んでたりします。
あれは、サーバーに情報を送っているのですが簡単にいうとあれと同じです。
CSSやimgにも同じようにパラメータ渡せます。
渡すものはなんでもいいんですが、分かりやすく更新日の日付が良いでしょう。

/* cssの後ろに日付パラメータ追加 */
<link rel='stylesheet'  href='style.css?20221222' />

/* 画像も同じように */
<img src="logo.jpg?20221222">

パラメータを渡すことによって、新しいファイルと認識するため、キャッシュが残っていても再読み込みしてくれます。
もしまた別の日に修正などが入ったら日付を書き直せばまた読み直してくれます。

これで自動で再読み込みしてくれるので、「直ってないよ!」といわれることもないでしょう。

PHPを使用してキャッシュ更新を強制する

PHPを使用してキャッシュを無効化する方法です。
「PHPよく分からないよ!」という方も簡単だし、覚えると便利なので是非ご参考下さい。

phpの「date」関数でキャッシュを無効化する

パラメータを渡す方法は便利ですが、毎度パラメータを記載するのがめんどくさい!
というときは、PHPでパラメータを自動化しましょう。

phpのdate関数で現在時刻を出力させます。
これなら毎回手動で変えなくても、毎度自動で読み込んでくれますね。

date関数

指定した日付を、引数で指定したフォーマットの日付文字列として返します。
日付けが指定されていない場合、現在の時刻が使われます。

<!-- data関数に与えている('YmdH')は年月日時になるようフォーマットを指定しています。 -->
<link rel="stylesheet" href="style.css?<?php echo date('YmdH'); ?>" type="text/css">

これを実際にサーバーで実行すると、👇のように現在日付のパラメータが設定されます。

<link rel="stylesheet" href="style.css?2024012013" type="text/css">

phpの「filemtime」関数でキャッシュを無効化する

dateでパラメータ出力する方法だと、常にキャッシュを無効化するので、キャッシュの機能自体が全く無意味なものになります。

そこで、「filemtime」を使用します。
filemtime()関数はファイルの更新日時を取得する関数です。
ファイル更新日時をファイル名の後ろに出力することで、ファイル更新時のみキャッシュを無効化することが可能です。

filemtime(ファイルへのパス)

用方法としては、ファイル名の後ろに出力します。
注意点としては絶対パスは使用できないので相対パスで指定しましょう。

<link href="../css/style.css?<?php echo filemtime('../css/style.css');?>" rel="stylesheet">

これを実行すると、下記のようにファイルの更新日付けがパラメータとして渡されます。

<link href="../css/style.css?1705759220" rel="stylesheet">

これで、cssファイル更新時のみキャッシュを自動で読み直すので、今後いちいちキャッシュを更新する必要がなくなります。

以上 ブラウザのキャッシュをクリアする方法でした。
直ってないよ!って言われたときは、キャッシュくらい消して見ろ!! とも思いますが、こちらの不備ですのでしっかり対応しましょう!

HTML、PHPなどを学びたいあなたへオススメサービス

おすすめ

7000本の授業が見放題!社会人向けオンライン学習動画【Schoo(スクー)】

7000本の授業が見放題!オンライン学習動画【Schoo(スクー)】

総合評価 :

参加型生放送授業」と、「7,000本以上の録画授業で動画学習
「WEBアプリケーション開発【入門】」や「HTML・CSS基礎」などWEB制作講座も多彩!
参加型生放送授業は無料録画授業は月/980円と格安で学べる!

  • 365日配信される参加型生放送授業が無料
  • チャットで業界の気軽に質問できる
  • 月/980円で今までの授業がどれでも見放題!
  • WEB制作や、プログラミング講座も多彩な講座が用意されています。

\ まずは無料授業を体験! /

【Schoo(スクー)】

オシャレなサイトなので、是非一度ご覧ください。

-コーディングの困ったを解決
-, , ,