[ホスティング] ブラウザのキャッシュの振る舞いを制御する (HTTP)

デザイナから苦情あり。CSSを更新してディプロイしてもブラウザ上で変化が確認できず、ブラウザでページを強制リロードして初めて変化が現れるとのこと。恐らくキャッシュに関係した問題だろう。そういえば以前、前任のフロントエンドプログラマと前任のインフラエンジニアがキャッシュが云々と色々いじっていたっけな。

ブラウザ組み込みの開発者ツールでHTTPレスポンスをダンプしたところ以下の記述を発見。キャッシュされているデータを使うように常にブラウザに強いている。どうやらく前任者が試行錯誤したままの状態で放置したのだろう。これじゃあCSSを更新しても反映されなくて当然だ。

政治的な理由でNginxの設定変更は僕には許されていないので、データセンタのインフラ担当に依頼して以下のように変更してもらって解決。

ブラウザのキャッシュコントロールを正しく理解する

以下の記事がわかりやすかったのでリンク&まとめ。

ブラウザのキャッシュコントロールを正しく理解する – Qiita
http://qiita.com/hkusu/items/d40aa8a70bacd2015dfa

①ブラウザに一切、キャッシュさせたくない場合

②ブラウザにキャッシュさせるけど、変更ないか都度確認するようにしたい

③ブラウザにキャッシュさせ、都度確認はそれほど必要ない

参考サイト

Leverage Browser Caching | PageSpeed Insights | Google Developers
https://developers.google.com/speed/docs/insights/LeverageBrowserCaching

Page caching with Nginx – whitespace
http://whitequark.org/blog/2014/04/05/page-caching-with-nginx/

HTTPヘッダチューニング Expiresヘッダについて | REDBOX Labo
http://blog.redbox.ne.jp/http-header-expires.html

Expiresヘッダを追加しよう! | dogmap.jp
https://dogmap.jp/2007/09/04/add-an-expires-header/

たった数分!ページ高速化のためhtaccessでキャッシュ設定は絶対やっておこう!
https://syncer.jp/page-cache-setting

ブログ – expiresヘッダを調整して画像の通信量を抑制する
https://principle-works.jp/blog/setup-expires-header-and-reduce-image-traffics/