http中的Cache-Control:must-revalidate首部

cache-control:must-revalidate 首部会对过期后的缓存进行验证

1.must-revalidate和no-cache的区别

no-cache会强制验证缓存(无论缓存是否过期),而must-revalidate只会验证过期后的缓存。

2.为什么需要must-revalidate

 当初看到这里的时候就产生了这个疑问,一般来说,缓存过期后就不能再使用,必须先进行验证,那么为什么还需要must-revalidate首部。

:在http协议规范中,允许客户端在某些特殊情况下直接使用过期缓存,如校验请求错误时。而must-revalidate首部对过期缓存强制校验,如果遇到校验失败等情况,则返回504错误码。

注:在浏览器中点击back/forward按钮返回上一页时,浏览器会直接使用本地缓存来打开页面,即使缓存已经过期。must-revalidate和no-cache都不能阻止这一行为,只有no-store禁止缓存才能阻止。

所以无缓存一般写成:

resp.setHeader("Cache-Control","no-cache,no-store,must-revalidate");



原文地址:https://www.cnblogs.com/yangmie/p/13323832.html