UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【HTTP】新HTTP標準

こちらの記事を読んで新HTTP標準について知ったのでメモ

postd.cc

今の問題として、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標準についてざっくり理解した