コーディング・更新対応の際に、クライアントにキャッシュのことをお伝えすることはよくあること。

修正が完了しましたのでご確認をお願いいたします!
反映が確認できない場合はキャッシュの影響の可能性があるので、スーパーリロード(強制リロード)あるいはシークレットウィンドウをお試しくださいませ。



めんどくせぇ。
たびたびこんなことを言わないといけないのはうんざりしませんか?
本記事では、キャッシュの影響を受けないファイルの読み込み方を解説していきます!
実装方法
ファイル名の後ろに「?」 + 「英数字」とクエリパラメータを付けます。
<!-- CSSファイルの場合 -->
<link rel="stylesheet" href="/css/style.css?1">
<!-- JSファイルの場合 -->
<script src="/js/scripts.js?1"></script>
<!-- 画像の場合 -->
<img src="/img/img_example.png?1">
<!-- 修正が発生するたびに英数字を変える -->
<link rel="stylesheet" href="css/style.css?2">
作業が発生するたびに、英数字の部分を書き換えます。
上記の例だと、初稿が「?1」、修正のたびに「?2」「?3」…と、数字が増えていくイメージです。
クエリパラメータを変えるまではキャッシュが維持され、ファイル更新後にクエリパラメータを変更するとブラウザが自動的にキャッシュを更新してくれます。
納品の際は、お渡しする前に消しましょう。
よく使われる英数字の文字列
- 更新日:2025年2月21日の場合「?20250221」
- ファイルのバージョン番号:「?ver=1.0」
上記のケースが多いですが、任意の文字列で構いません。
英数字の他、ドット「.」、アンダースコア「_」、ハイフン「-」などを使ってもOKです。
文字列として使ってはいけない記号
下記の記号は、役割があるため文字列としては使えません。
記号 | 目的 | 記述位置 | 記述例 |
---|---|---|---|
? | クエリパラメータの付与 | URLまたはファイルパスの直後 | https://〇〇.jp/?▢ /css/style.css?▢ |
= | キーと値の設定 | クエリパラメータの名前と値の間 | https://〇〇.jp/?▢=△ /css/style.css?▢=△ |
& | クエリパラメータの追加 | クエリパラメータ同士の間 | https://〇〇.jp/?▢=△&■=▲ /css/style.css?▢=△&■=▲ |
# | アンカーリンク | クエリパラメータの後ろ | https://〇〇.jp/?▢=△#◇ |
キャッシュが残らなくなるメリット
- 作業の効率化
- キャッシュ削除をお願いする手間がなくなる
- クライアントとのトラブル回避
作業の効率化
デベロッパーツールの「キャッシュの消去とハード再読み込み」を活用しているコーダーさんは多いのではないでしょうか?
更新作業の度にキャッシュクリアするのはめんどくさいし、地味に工数がかかります。
この手間がなくなるだけで、制作者にとって貴重な一分一秒が確保され、作業の効率化につながります。
キャッシュ削除をお願いする手間がなくなる
エンドのクライアントだと専門用語がわからず「キャッシュ?スーパーリロード??シークレットウィンドウ???」となるでしょう。(通常のユーザーは使わないですからね…)
専門用語を使わず、わかりやすい言葉で一から説明するのは大変です。
そのやりとり自体なくなればお互いに困ることもございません。
クライアントとのトラブル回避
筆者の体験談ですが、同じ案件・同じ担当者様に「作業完了→キャッシュのことを伝える」を直近10回ほどやったのに、一回でも言わないと「反映が確認できません。」と返ってくるという出来事がありました。
別のエンド案件では、何度も説明しているのに解決されなかった原因が、担当者様が私の教えた方法をスルーしブラウザ再起動でキャッシュクリアを試みていたということもありました。
間違いなく更新できているのにキャッシュのせいで反映を確認してもらえないことは、制作者にとっては冤罪かつイメージダウンです。
下手したら公開後のトラブルにもなりかねません。
キャッシュ問題が解決すれば、相手にお時間を取らせることもなく「しつこい」「めんどくさい」と感じさせることもありません。
まとめ
コーダーにとってキャッシュは結構シビアな問題だと思います。
しかもスマホではスーパーリロードができないためシークレットウィンドウで確認してもらうしかありません。
今回のクエリパラメータを付けてキャッシュクリアする方法ならば、半強制的に新しいファイルを読み込みできるため、キャッシュに関するやりとりを無くすことができてとても楽になります!
日頃からキャッシュに困らされている方は、ぜひ本記事を参考にしていただければと思います^^
コメント