stale-while-revalidate
ざっくり言うと
reqが飛んできた時に
cacheがない場合は
originにrequestを投げて、結果を返しつつ、その値をcacheする
cacheがある場合は
cacheしたものを返しつつ、originから新しいものをもらい、cacheする
従って、clientからrequest来たときは常にcacheを返すことができる
(初回以外は)
originの計算が重い場合でも常にcacheを返せる
また、cacheの中身は適度に更新されるので、値が古くなることもない
↑仕様や実装に依存するので、この説明は厳密ではないがノリとしてはこんな感じmrsekut.icon
これは色々なところで使われているモデル
例えば、
HTTP headerのCache-Control
client→CDN→origin
VarnishのGrace Mode
client→Varnish→origin
Next.jsのISR
client→Next.js→origin
react-query
client→react-query→origin
細かいところや指定の仕方は異なる
例えば、react-queryのstale-while-revalidateは、revalidateされた直後にfreshなものを画面に描画してくれる
だから「次回のrequest時に〜」の概念がない