相关文章
背景
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
即可,其他文件则在文件名上加入指纹并正常缓存