「キャッシュ」とは?
勉強記録
今週から写真共有アプリの復習に入っています。
復習のスケジュールとして、[午前中は自分で復習、午後は復習した箇所をSEである夫に解説する] という流れです!
夫からは容赦なく質問が・・・(笑)自分の知識が曖昧だった点がいくつかあったので、質問されてうまく答えれなかった内容をまとめます。
キャッシュとは何か
LaravelではJavaScriptやVueコンポーネントなどをコンパイルする仕組みが最初から備わっており、その設定を容易にするためにLaravel Mixというライブラリを使います。
ビルドの際に参照されるwebpack.mix.jsというファイルを編集したときに、「バージョニングの有効」を行いました。
コンパイルしたファイルのバージョニングを有効にするのは、キャッシュを読まないようにするためとのこと・・・
そこで夫から「キャッシュってなに?」との質問がありました。
キャッシュとは
キャッシュとはWebブラウザがページの表示を速くするために、JavaScriptやCSS、画像ファイルなどをローカルのPC内に勝手に保存する機能のこと。
(ブラウザだけでなくサーバーサイドのキャッシュもあるけど、今回はブラウザのキャッシュについて)
キャッシュがないと、ページを表示するたびに全てダウンロードしてくるので、動作が遅いしサーバーにも負担がかかる。
ブラウザごとにキャッシュがあるので、Chrome、Safari、FireFoxなどブラウザごとにキャッシュを消すことができる。
キャッシュのデメリット
ページの情報を修正したり画像を変更した場合、以前にページを表示したときのキャッシュが効いていて、更新したコンテンツが反映されないというデメリットがある。
クライアント側でキャッシュを削除すれば解決するが、提供側が必要に応じてキャッシュが効かないように考慮してサービスを提供すべきである。
キャッシュが効かないようにしたい場合には・・・
クエリパラメーター(URLの?から始まる部分)を書き換えることで、ブラウザは変更前とは違うURLだと認識して、キャッシュを読まずに新しく更新されたファイルを読みに行く。
クエリパラメーターの書き方にはとくに決まりがないが、リリース日、バージョン、ランダムな数値などをつける場合が多い。
今回バージョニングを有効にしたワケ
バージョニングを有効にすると、ビルドするたびにコンパイルしたファイルのURLにランダムな文字列をつける。
つまりブラウザ側は新しいファイルだと認識して、キャッシュを読まなくなり、変更や更新した内容がページに反映されるようになる。