"no-cache"vs"max-age = 0,must-revalidate,proxy-revalidate"

Pac*_*ier 5 caching http cache-control browser-cache rfc2616

HTTP响应与Cache-Control: no-cachevs有Cache-Control: max-age=0, must-revalidate, proxy-revalidate什么区别?

浏览器会将其视为相同吗?

Lio*_*-On 3

一般来说,不同的浏览器的行为并不完全相同。HTTP 缓存标头。

我记得的一个小区别(找不到来源,所以我不是 100% 这是准确的行为描述)是 Chrome(公平)将其max-age=0视为您指定的max-age=10(假设行为差异足够小,但性能影响)还是有意义的)。

无论如何,以下是浏览器之间 HTTP 缓存行为差异的一些其他示例:

  • 有些人会优先考虑 HTTP 1.0 缓存标头 ( Pragma),其他人会优先考虑 HTTP 1.1 缓存标头
  • 某些浏览器(FF + ?)不遵守 no-store指令并将数据存储在加密缓存中
  • 有些浏览器会忽略no-cache在 后指定的指令public,而其他浏览器则不会。
  • IE 忽略 max-age何时vary存在。
  • ETC。

我的总体建议是同时使用Cache-Control: no-cache, must-revalidate, proxy-revalidate( pragma: no-cacheHTTP 1.0) 和 ,Expires: 0以确保所有浏览器不会缓存带有这些标头的内容。