Cache-Control:no-cache支不支持这种设置?
Cache-Control:no-cache是缓存但立即失效,然后去cdn对比etag。如果etag没过期则返回304使用本地缓存,过期则返回202使用新上线内容。
现在的场景:去cdn对比etag,但网络不通,这时也使用本地缓存而不是报网络错误,应该怎么实现?前端有这样的配置吗? 应该怎么配置?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
cache-control: no-cache不是不缓存,而是有条件地使用缓存(当ETag对比一致、服务器返回304后可使用缓存)
cache-control:no-cache 表示不缓存,直接请求服务器(你的cdn)下载文件。
etag 是一个类似文件 content hash sum,当浏览器第一次下载文件的时候,服务器将文件的etag发送给浏览器,浏览器保存下来。当下一次访问这个文件时,浏览器发送请求并携带 etag 信息到服务器。服务器检查etag是否和目标文件一致,如果一致,浏览器就使用缓存副本,否则,下载新文件。
如果想使用缓存,要先清楚你期望的缓存策略。一般可以将前端资源分为两类,html 和 其他,对于html,设置 no-cache 和 etag,从而在保证html最新的前提下充分利用缓存。
其他资源,如 css/js/image 等等,使用gulp/webpack 等构建工具在文件命中加入内容的hash,并设置尽可能长的 max-age(一般设置一年)。