IT30

キャッシュが原因で更新したのに前と変わらない【キャッシュの削除を毎回依頼しなくても良い方法】

キャッシュが原因で更新したのに前と変わらない【キャッシュの削除を毎回依頼しなくても良い方法】

2019.06.14 更新

ウェブサイトの作成依頼を受けるとクライアントと作ったサイトを確認しながらやりとりがありますよね。

テストサイトなどを作ってそこでデザインやコンテンツの修正や確認を繰り返しているとよくこんなことがあります。

 

あなた『先ほどご依頼いただいたデザインの変更(CSSの変更)をしたので確認してください』

クライアント『いや、変わってないですね』

あなた『…。(そんな言い方しなくても…)』

 

原因はキャッシュが残っているから

 

原因をご存知の方がほとんどだと思いますが、ウェブサイト作成を始めたばかりの頃は本当に原因がわかりませんでした…。

こちらではちゃんと変更が出来ているのに、クライアント側では変わっていない…。

ご丁寧に変わっていない証拠のスクショが送られてきたり…。

ブラウザなどを確認したりしても問題は解決せず、なにかと思えばキャッシュのせいでした。

 

キャッシュとはウェブサイトの読み込みを早くするための便利な機能

そもそもキャッシュとはブラウザに付いている便利な機能です。

一度訪問したウェブサイトの画像やデータなどの情報をキャッシュ領域に保管しておいて、次回再訪問したときにサーバーからもう1度ダウンロードするのではなく、キャッシュ領域の前回データを表示するという、読み込み時間を短くするための機能です。

ですがこのキャッシュのおかげで【更新したはずのデータを読み込まずに前回のキャッシュ領域のデータを読み込み表示する】ということが起き、クライアント側では表示されていなかったのです。

特にCSS、JavaScript、画像などはよくこれが起こりやすいのです気をつけましょう。

 

キャッシュの削除を依頼する

その場合、クライアントにキャッシュの削除を依頼すれば問題は解決します。

キャッシュを削除さえしてもらえれば再度サーバーからデータを読み込みますので、最新のCSSや画像データを読み込んで表示してくれます。

Google Chromeだと設定からキャッシュの削除ができます。

もちろんクライアントだけではなく自分でサーバーに上げた時にチェックするときにも役立ちます。

(ローカル環境でもキャッシュは残ることがあります)

 

毎回クライアントにキャッシュの削除を依頼するのは面倒…

原因はキャッシュにあることがわかり、削除の仕方もわかったのですが、正直毎回更新する度にクライアントにキャッシュの削除を依頼するのは面倒だし、クライアントにも手間がかかります。

場合によってはキャッシュとは何か?から説明しないといけないこともありますし、出来れば更新したときぐらい自動的に、必ずキャッシュを読み込まず毎回サーバーからデータを取ってきてはくれると助かります。

『要はCSSデータが新しいよ』とサーバーにわかるように指示を出してあげれば良いということですので、クエリを付けてあげます。

<link rel="stylesheet" type="text/css" href="styles.css">
↓
<link rel="stylesheet" type="text/css" href="styles.css?20190614">

style.cssの後ろに?を追加してその後ろになんでもいいので文字を入れます。

私は更新したタイミングがわかりやすいように年月日(回数)を入れていますがルールはなんでも大丈夫です。

このようにするとファイルはもちろんstyle.cssを読み込んでくれるのですが、クエリが変更されていると別のファイルとして認識してくれるので、サーバーから再度情報を読み込んでくれるようになります。

これで何度もキャッシュの削除を依頼しなくても大丈夫ですね。

 

過去この問題ですごく悩んだのでメモしておきます。

マレーシアの日系IT企業で働く30代のウェブエンジニアの備忘録ブログです。

基本は過去わからなくて悩んだコーディングや諸々の設定方法などをメモ代わりに書き留めています。

ウェブコーディングやワードプレスの勉強中の方や同じ問題で悩んでいる方のお力になれたら嬉しいです。

ウェブサイトの制作依頼をマレーシアのローカル企業にご依頼されて大変な思いをしたことはございませんか?

安価が魅力のマレーシア企業ですが、お国柄どうしても…
「期日を守らない」「連絡がおろそか」「上手くコミュニケーションが取れない」
などのお悩みをかかえることがあると思います。

かと言って日系の企業はマレーシアの企業よりも値が張るため予算的に合わない。

私もマレーシアで働くからこそ、その大変さを理解した上でご提案があります。