stale-while-revalidate
是一种优化HTTP缓存策略的机制,旨在平衡资源的新鲜度和加载速度,提升用户体验。其核心原理如下:工作机制
- 缓存有效期(max-age)内:直接使用本地缓存,无需验证。
- 缓存过期后的时间窗口(stale-while-revalidate):
- 立即返回旧数据:用户无感知延迟,快速获取内容。
- 后台异步验证:同时向服务器发起请求,检查资源是否更新。
- 更新缓存:若服务器返回新数据,替换旧缓存,供下次使用。
- 超出时间窗口:必须等待服务器响应,用户可能感受到延迟。
Next.js中的应用
服务端渲染SSR,设定好页面的revalidate时间后,比如说60s
那么在这60内,不管用户怎么刷新都不会有新的内容,直到超过60s
此时用户刷新网页,服务器还是会返回旧的缓存数据给你,但是会触发服务器拿新的数据来渲染网页
之后用户再刷新网页,就是新的内容了