浅聊 Cache-Control 之 no-store vs no-cache vs must-revalidate

相关文章

  • 浅聊 HTTP Cache

背景

Web 标准中,在没有设置 cache-control 的情况下,是倾向于支持使用缓存的,因此,cache-control 更多用于 避免 缓存,而非维持缓存。

本文将做辨析的几个参数,均与避免缓存相关。

从严格程度上说,no-store > no-cache > must-revalidate

must-revalidate

当缓存过期后(max-age 到达),客户端不能继续使用该资源,必须向服务端发起重新校验。

no-cache

相当于 max-age=0, must-revalidate,综合起来的效果是,本地缓存每次使用前都必须经过服务端校验。

注意几点

  • 客户端仍然会缓存文件
  • 客户端向服务端发起校验时,如果校验成功(文件没有发生变化),是不需要重传文件,而可以直接使用本地缓存的

no-store

客户端完全不缓存文件。

建议

  • 对于单页应用,index.html 文件分发时设置 cache-control: no-cache, private 即可,其他文件则在文件名上加入指纹并正常缓存

参考

  • What's default value of cache-control?
  • Why both no-cache and no-store should be used in HTTP response?

你可能感兴趣的:(浅聊 Cache-Control 之 no-store vs no-cache vs must-revalidate)