還暦過ぎたエンジニアの挑戦

還暦過ぎても好奇心だけは忘れない エンジニア Hikaruです

MENU

キャッシュったって現金じゃないが

画像を変更したはずなのに変わらない。。。


今日はリクエストもいただいたので
ブラウザのキャッシュについて書いてみようと思います。

いつもコメントをいただいたり、
DIYのヒントをいただいたりしているDIYnomさんさんから
プロフィールの画像を変更したのだけれど、
コメントやスターをつける時のアイコンが
(変更されていることもあるけれど、)
古いままだったりするということでした。

このアイコンのことだと思いますので ちょっとノムさんのコメント欄からお借りしました。

  • こうしたい

本当はこう変更したはず

  • しかしこうなる

でも前のアイコンのまま

なぜ?🤔

一般的にこういうことが起きるのは

ブラウザのキャッシュ

のためだと思ってほぼ間違いないです。

そのキャッシュとは何もの?
を理解するときに
そもそもブラウザはホームページやブログの記事の画像を表示する時に
どういうことをしているのか?
ということをちょっと理解しておくとわかりやすいです。

が、そんな話は小難しくなってしまいますのでパス。

それより、「イメージ」していただきたいと思います。

画像には必ず個別の名前

がついています。 ここでは名前と書きましたが、
その画像が置かれているインターネット上のアドレスのことを指しています。

パソコンのブラウザがその名前(アドレス)を呼び出すと、
必ず「世界でだた一つのそのアドレスにある画像」が探し当てられて、
ダウンロードすることができ、 それをブラウザに描画して表示します。

その時に、ダウンロードした画像を
呼び出したパソコンの中に「保存」しておきます。

それが「キャッシュ」です。

なぜ、そんなことをするかというと、 同じ画像を呼び出そうとするなら、
もう一度インターネットを介して画像をダウンロードするより、
キャッシュしたパソコンの中に保存したがぞうが既にあるなら
それを優先的に表示することで、 無駄な通信時間を避けて素早く表示しようとする

という動きをするということです。

ホームページは
初めて訪れた時より、
2回目に訪れた時の方がすばやく表示されるように感じるのは
このキャッシュのおかげなのです。

もう気づかれたかもしれませんが、 サーバー側で画像を変更しても
(例えばノムさんプロフィール画像を変更したとしても)
その画像の名前(アドレス)が変わらない限り、
ブラウザは変更された画像をダウンロードしようとはしません。

名前が同じ=依然と同じ ・・・だから内容も同じはず

それならばパソコンに保存した(キャッシュした)画像を表示した方が
早いし、合理的だと解釈する
ということですね

でも、それでは今回の場合困りますね 変更した画像の方を表示させたいわけです。

それには

新しい画像は名前(アドレス)も変える

そうすれば、その場で新しい画像に置き換わります。

ですが、、、
今回のように
はてなプロフィール画像
というようなインターネット上のサービスというのは
その名前(アドレス)事態は変わらないことの方が多いです。
というかそれが普通です。

なので、 変更した画像を表示しようとするなら、先ほどの

キャッシュされた画像を削除する

そうすれば新しい画像が表示されます。

Chromeを例に手順を紹介します。

  1. 設定画面を開く

    設定画面を開く

  2. プライバシーとセキュリティを開く

    プライバシーとセキュリティを開く

  3. 閲覧履歴データの削除を選ぶ

    閲覧履歴データの削除を選ぶ

  4. 「キャッシュされた画像とファイル」にチェックを入れて「データを削除」する この時、特に必要なければ、「閲覧履歴」や「Cookieと他のサイトデータ」のチェックは外しておいた方が良いと思います。

    キャッシュデータを削除する

これで、新しい画像が「キャッシュし直される」ことになります。

しかし面倒ですよね。。。

お急ぎの方は

強制リロードする

と良いです。 (スーパーリロードと呼ばれることもあるようです。)

Macの方は Cmd + Shift + R WIndowsの方は Ctrl + Shift + R

というキー操作をすると、
キャッシュを無視して、
最新の画像をダウンロードしなおしてくれるはずで
ページ全体がリフレッシュされます。

大体今回のような問題はこれで解決します。

「大体」と書いたのは
そのページの構造によってはそれだけでは
解決しないかもしれないのですが、
一般的には気にする必要は無いでしょう。
というニュアンスです。

しかし、
いずれの方法も

サイトを見てくれているユーザーに操作を依存する

というところが、本当の悩みどころですね。

普通にサイトをよく訪れてくる人は
(初めて訪れる人は問題ないです
・・・なぜなら画像がキャッシュされていないから)
そのサイトのオーナーが画像が変更したことを知る術がないし、
特に気にも止めないと思われるからです。

ですので、
どうしても画像(アイコン)を変更したことを伝えたいと思ったら
「変更しました〜、画像が変わらない人は強制リロードしてみてください」
みたいに記事の中などで案内する必要があるかもしれませんね。

また、キャッシュは永遠に保存されるものでもないので、
いつかは自然にリフレッシュされて、画像は変更されます。

それがいつか?
はなんとも言えませんが。

 

Hikaru