数据缓存
最后更新于
stale-while-revalidate
,简称SWR,是 HTTP 的一种缓存失效策略。
对应到 HTTP 响应头 cache-control
的属性值,如图所示:
这种策略首先从缓存中返回数据(过期的),同时发送 fetch 请求(重新验证),最后得到最新数据。
假设,我们设置:
max-age=600
stale-while-revalidate=30
1,浏览器收到该响应后,会将结果缓存起来,请求的结果在600s内都是新鲜的(stale的反义词)。如果在600s内发起了相同请求,则直接返回缓存。
2,若 600s~630s(max-age+ stale-while-revalidate)内发起了相同的请求 ,虽然缓存过期了,但依旧使用该缓存结果;另外同时进行异步 revalidate,即重新验证,相当于浏览器在背后自己发一个请求,响应结果留作下次使用。
3,在 630s 秒后,发起相同请求时,则将和第一次请求一样,从服务器获取响应结果,并且浏览器并把响应结果缓存起来。