【WEBサイト】ブラウザキャッシュは必要か、不要か

変更したはずのWEBサイトの表示が変わらない。
「キャッシュが原因です」
と、お決まりのパターンです。
そもそも、キャッシュは必要なんでしょうか。
メリットとデメリットを考えてみました。
◆メリット
(1)WEBサイトの表示が早くなる
※ネット回線の速度が普通なら、体感的にはそんなに変わらない気がするけど…
(2)PageSpeed Insightsに言われたから
Googleのパフォーマンス測定ツール「PageSpeed Insights」でキャッシュをしなさいと指示されるために。
https://developers.google.com/speed/pagespeed/insights/?hl=ja
◆デメリット
いつまでたってもページ内容が変更されない。
詳しい方なら、キャッシュクリアをすれば更新される手段を試すのですが、
一般の方にはわかりにくいと思います。
とくにスマホだとキャッシュクリアも面倒です。
最新の内容が反映しにくいデメリットが大きいので、特別な理由がない限りはキャッシュは不要かなぁと思います。
デザインとか内容とかをほとんど変えないサイト(例えば弊社のサービス紹介サイト)
であればキャッシュ有効のほうが良いと思います。
つまり、サイトの内容次第になりますので正解はありません…
さて、キャッシュの無効化、有効化には設定が必要ですが、少しコツがありますので、
メモとしてまとめておきます。
◆キャッシュされているかを確認する。
上記画像の通り、Chromeコンソールで確認できます。
Chromeコンソールを開く
↓
Networkを選択する
↓
適当な要素(.jpg画像とか)を選択する
↓
Status Code に「form memory cache」とか表示されていればキャッシュされています。
◆キャッシュを有効にする
.htaccess に下記の記述をします。
1 days の部分は 1 week とか 1 hours とか指定できます。
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType text/js "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType image/png "access plus 1 days"
ExpiresByType image/x-icon "access plus 1 days"
ExpiresByType image/vnd.microsoft.icon "access plus 1 days"
ExpiresByType image/svg+xml "access plus 1 days"
ExpiresByType application/javascript "access plus 1 days"
ExpiresByType application/x-javascript "access plus 1 days"
</IfModule>◆キャッシュを無効にする
(1).htaccess に下記の記述
php_flag opcache.enable Off
Header set Cache-Control "no-store" Header set Pragma "no-store"(2)htmlのヘッダーに記載する。
※html5では意味なかったかも。うろ覚えですが、とりあえず記載しておきましょう。
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">