TL;DR:如何实现像Cache-Control: public,must-revalidate这样的缓存,但不知怎么地告诉浏览器每30分钟就重新验证一次,而不是每次请求?
长篇版本:
我正在提供一些js和css文件,我希望用户始终保持本地缓存的更新,但要有一些自由。浏览器应该能够在本地缓存文件,但是不应该需要对每个请求重新进行验证。例如,在第一个304响应之后,再使用已经本地缓存的文件30分钟是可以的:在用户导航到下一页之后,浏览器不需要再次检查新鲜度。
我读过几篇关于如何实现像那样工作但没有成功的缓存的文章。
我知道304请求非常快(我使用的是CDN ),因为响应体是空的,但是浏览器仍然需要等待几毫秒,而且如果发出这样的4-5请求,浏览器已经开始排队这些revalidation请求。
最接近我的是:Cache-Control: max-age=1800,public,must-revalidate
浏览器将将资产缓存到初始的30分钟,但当它变得陈旧后,浏览器将开始每次重新验证。有什么办法可以绕过吗?
资料来源:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control https://support.cloudflare.com/hc/en-us/articles/115003206852-Origin-Cache-Control
发布于 2018-05-08 15:43:24
如果重新验证成功,它将缓存它30分钟。请参阅RFC 2616 10.3.5
如果缓存使用接收到的304个响应来更新缓存条目,则缓存必须更新条目以反映响应中给定的任何新字段值。
流程是这样的:
https://stackoverflow.com/questions/50024384
复制相似问题