No.57
【WEB】スーパーリロード時のHTTPヘッダ
ブラウザがスーパーリロードしたときに送信されてくるHTTPヘッダ
とある案件にて、ブラウザがスーパーリロードを行った際に確実に最新の情報を送信することが求められた。
もちろんブラウザ側もそれなりにキャッシュ制御をしてくれるけど、はっきり言ってアテにならないうえに、各ブラウザごとに挙動が異なるのが厄介だ。となるとHTTPヘッダを見てプログラム側で制御するしかない。
というわけで、実際に各ブラウザからスーパーリロードしたときのHTTPヘッダを確認してみた。
各ブラウザの返却値
対象とするHTTPヘッダは一般的なCache-ControlとPragmaとした。
| ブラウザ | Cache-Control | Pragma |
|---|---|---|
| IE11 | no-cache | |
| Chrome | no-cache | no-cache |
| FireFox | no-cache | no-cache |
| Safari | no-cache | no-cache |
つまり、スーパーリロードされたかの判断は
Cache-Control か Pragma
に
no-cache
が含まれているかで判断できる。
あとは念のため
no-store
も含まれているか確認して判断すれば良いだろう。
補足:スーパーリロードの操作
| ブラウザ | OS | コマンド |
|---|---|---|
| IE11、Chrome、FireFox | Windows | Ctrl + F5 |
| Safari | MacOS | Shift + ブラウザの更新ボタン |