キャッシュに関わる HTTP Header メモ

キャッシュ&HTTPヘッダのことを全然知らずにCDNのお仕事で死ぬほど困ったので、最近調べたときのまとめ

■キャッシュとは

キャッシュとはデータを特定の場所に蓄積して後から必要になった時に再利用することで、
処理高速化を図るために利用される。世の中には色々なキャッシュがあるが、
ここでは主にCDNやWEBサーバやWEBブラウザに関係するキャッシュを指す。

■キャッシュの種類

・ブラウザキャッシュ
WEBブラウザによって作成され、ローカルで保存・利用される。ローカルなので、作成されたキャッシュは自分だけで使用する。
ユーザ側のweb表示高速化に繋がる。

・サーバのキャッシュ
プロキシサーバやCDNのエッジサーバで使用される。リモートサーバ上で作成され、他のユーザと共有して利用してすることが多い。
CDNでは直接ユーザからリクエストを受け付けるエッジサーバがキャッシュを持つことで、Originサーバへのアクセス量・負担を軽減させる。

■キャッシュに関係するHTTP Header

キャッシュはHTTP headerによってルールが定義される。
サーバから送られてくるレスポンスヘッダに入っていて、WEBブラウザやプロキシサーバは解釈した

ブラウザキャッシュもサーバキャッシュも基本は同じ仕組みでキャッシュを作成する。

・Cache control :
色々指定できる。

・Expires
有効期限を日時で指定する。

Expires: Fri, 14 Jun 2019 13:19:41 GMT

・Last Modified
Last-Modified: Thu, 07 Jun 2018 23:26:59 GMT

・Etag
Etag: "01c42330a2ec50521b35171536d9426b+gzip"

・指定なし
Cache-controlもなくて、Expiresもヘッダにない場合は、Last Modifiedを使って計算される。(でも実際にはブラウザによって違う??)
式:Dateヘッダーの値からLast-modifiedヘッダーの値を除いた値に10を掛ける。
つまり最終更新日から時間が経過しているほど、長い時間がキャッシュとして設定される。

Copyright © 2021 たぐたぐ.com. All rights reserved.