Thu Mar 28 2024 23:02:09 GMT+0000 (Coordinated Universal Time)
このページはサーバーサイドで new Date() し、HTTPレスポンスに
Cache-Control:public, max-age=0, s-maxage=10,
stale-while-revalidate=31536000
に設定している
加えて、SSR時に奇数分なら Status Code 500 で返す
つまりStatus
Codeが200のときに、一度ページがキャッシュされてから10秒間はキャッシュから返却(時刻が変わらない)し、
10秒経過以降〜1年以内で1番目のアクセスはキャッシュから返却しつつ裏でキャッシュ更新、2番目以降のアクセスでキャッシュ更新が完了していれば、更新済みの新しいキャッシュ(時刻が更新されている)を返却
→ いつもはやくてすごい 🚀
加えてサーバー側エラー時でも、キャッシュに正常な物があればそこから返却する(理論上1年間)
→ いつでもオンライン 💪
サーバーエラー時はキャッシュされない
※FIrebase HostingのCDN(Fastly)では stale-while-revalidate を使用すれば
デフォルトでエラー時でもキャッシュから返す stale-if-error
な動作が行われるっぽい?
RFC5861にはstale-while-revalidateのオリジンサーバーエラー時の記述はないが、まぁ便利なんじゃない?