こちらの記事を読んで新HTTP標準について知ったのでメモ
今の問題として、CDNなどのキャッシングサービスによる静的コンテンツのキャッシュは重要だが複雑でわかりにくい
なので、これを整備しようという話
記事ではいくつか問題点が挙げられているが、その中で私が共感するのはキャッシュから間違ったレスポンスが配信されること
例えば、ドイツのユーザにフランス語のコンテンツが提供されたり、ひどいケースでは未認証のユーザにログインコンテンツが提供されたりすることで、十分な注意を払っている
これらの問題を解決するため、提案されている新標準案は以下
- Cache-Statusヘッダ
- Targeted Cache-Controlヘッダ
Cache-Statusヘッダ
Cache-Statusは以下の状態を全て記したヘッダ
- そのレスポンスがどこから来たのか?
- なぜそのレスポンスが送信されたのか?
- そのレスポンスはキャッシュから返されたのか、それともサーバから送信されたのか?
- キャッシュから返された場合、どのキャッシュか?
- それはあとどれくらい有効か?
- キャッシュから返されたのではない場合、それはなぜか?
- その新しいレスポンスは後で使用するために保存されたものか?
以下のような構造になる
Cache-Status: OriginCache; hit; ttl=1100, "CDN Company Here"; fwd=uri-miss;
Fastlyではキャッシュヒットしたかどうかは X-Cacheヘッダに格納されるが、他のCDNは違ったりするので、これが統一されるのはかなりよい
Targeted Cache-Controlヘッダ
Targeted Cache-Control は、従来のCache-Control が同じリクエストを処理する全てのキャッシュが同様に従わなくてはならない問題を解決するもので、以下の構文でどのキャッシュに対する設定なのかを示すことができるヘッダ
<Target>-Cache-Control: param, param=value, param...
以下のように
Client-Cache-Control: must-revalidate CDN-Cache-Control: max-age=600, stale-after-revalidate=300 Squid-Cache-Control: max-age=60 Cache-Control: no-store
2つの新しいHTTP標準についてざっくり理解した