数据缓存
stale-while-revalidate
,简称SWR,是 HTTP 的一种缓存失效策略。
对应到 HTTP 响应头 cache-control
的属性值,如图所示:
![](https://docs.fireboom.io/~gitbook/image?url=https%3A%2F%2F2707494476-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FNx22Cp3wzkuW1siRbMwW%252Fuploads%252Fgit-blob-0f716b979269a981edb3a06b7151be2c5420bc80%252Fimage%2520%2850%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=f212dcb0&sv=1)
这种策略首先从缓存中返回数据(过期的),同时发送 fetch 请求(重新验证),最后得到最新数据。
假设,我们设置:
max-age=600
stale-while-revalidate=30
1,浏览器收到该响应后,会将结果缓存起来,请求的结果在600s内都是新鲜的(stale的反义词)。如果在600s内发起了相同请求,则直接返回缓存。
2,若 600s~630s(max-age+ stale-while-revalidate)内发起了相同的请求 ,虽然缓存过期了,但依旧使用该缓存结果;另外同时进行异步 revalidate,即重新验证,相当于浏览器在背后自己发一个请求,响应结果留作下次使用。
3,在 630s 秒后,发起相同请求时,则将和第一次请求一样,从服务器获取响应结果,并且浏览器并把响应结果缓存起来。
最后更新于