あるページ回遊中にブラウザバックをすると挙動がおかしいバグに遭遇した
調べるとどうやらキャッシュしない方が良いところでキャッシュされていたのが原因のよう
ところで、キャッシュをしない設定というのはCache-Control: no-store
で制御が可能だが、Cache-Control: no-store
の設定方法はレスポンスヘッダーとリクエストヘッダーに設定する2通りあり、どちらか一方を設定すれば良いのか、両方設定すべきなのか迷ったので調査してみた
参考にしたのは以下 www.oreilly.co.jp
レスポンスヘッダに設定する
HTTP/1.1で追加され、キャッシュ制御をサーバー側から指示ができる
Expiresよりも優先される
組み合わせは
- private, publicからひとつ。あるいは設定しない(デフォルトはprivate)
- max-age, s-maxage, no-cache, no-store からひとつ
ただ、ここの設定の有効無効はCDNなどによってはまちまちとのことなので、これらをすべて指定して次のようにしても構わないとのことCache-Control: private, no-store, no-cache, must-revalidate https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/405.html
リクエストヘッダーにCache-Control
の設定
リクエストヘッダーにCache-Control
の設定する場合、プロキシに対するキャッシュの指示を含めることができる
ただし、no-storeに関してはレスポンスヘッダに設定するのと同じ指示になる
結論、レスポンスヘッダーに仕込んでおけばよさそう
その他:HTMLのmetaタグに記述する
HTML4.xでは以下のように<meta>
タグでブラウザキャッシュの制御が可能だった
<meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache">
しかし、HTML5ではhttp-equiv
にこれらのキャッシュに関する設定はできない
https://html.spec.whatwg.org/multipage/semantics.html#pragma-directives