Cache-Control:no-cache支不支持这种设置?

新手上路,请多包涵

Cache-Control:no-cache是缓存但立即失效,然后去cdn对比etag。如果etag没过期则返回304使用本地缓存,过期则返回202使用新上线内容。

现在的场景:去cdn对比etag,但网络不通,这时也使用本地缓存而不是报网络错误,应该怎么实现?前端有这样的配置吗? 应该怎么配置?

阅读 4.1k
2 个回答

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(一般设置一年)。

cache-control: no-cache不是不缓存,而是有条件地使用缓存(当ETag对比一致、服务器返回304后可使用缓存)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题