UGA Boxxx

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

【Fastly】SWRと一緒に使った場合のCDNキャッシュ

SWRの期間もCDN(Fastly)のキャッシュを使う場合はどうするべきかの話を聞いたので整理する

stale-while-revalidate(SWR)を使うとmax-ageの期限が切れた状態でも、しばらくそのままキャッシュを利用し、かつ、裏で非同期でデータをフェッチさせておくことができる uga-box.hatenablog.com

つまり、max-ageとSWRを一緒に使う場合

max-age + SWR

の期間はユーザはブラウザキャッシュを使うことになる

しかし、CDNではSWRの期間はなくmax-ageのみのキャッシュ有効期間が適用される

f:id:uggds:20201205191701p:plain

※1 でオリジンサーバーにお問い合わせになる

SWRの期間もCDN(Fastly)のキャッシュを使う場合はどうするか

Surrogate-Controlを使う

Surrogate-ControlはFastlyのキャッシュサーバのみに有効な期間を設定できる

これを使うとSWR中もCDNのキャッシュを使用することができる

f:id:uggds:20201205192144p:plain

※2のところ

ただ、Surrogate-Controlが長すぎると、ユーザには古いコンテンツが表示され続けるため調節が必要そう