TL; DR:如何实现像Cache-Control: public,must-revalidate
这样的缓存,但不知何故告诉浏览器每次只重新验证一次,比方说,30分钟,而不是每次请求?
长版:
我正在提供一些js和css文件,我希望用户始终保持本地缓存更新,但有一些自由。浏览器应该能够在本地缓存文件,但不需要在每个请求上重新验证。例如,在第一个304
响应之后,可以继续使用已经本地缓存的文件另外30分钟:在用户导航到非常有用之后,浏览器不需要再次检查新鲜度。下一页。
我已经阅读了一些关于如何实现类似的缓存但没有成功的文章。
我理解304
请求非常快(我使用CDN顺便说一句),因为响应正文是空的,但仍然,浏览器仍需要等待几毫秒,如果是4这样的请求就是这样的,浏览器已经开始排队这些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
答案 0 :(得分:1)
如果重新验证成功,它将再缓存30分钟。见RFC 2616 10.3.5:
如果缓存使用收到的304响应来更新缓存条目,缓存必须更新条目以反映响应中给出的任何新字段值。
流程是这样的: