如何使静态文件上的HTTP缓存标头无效

时间:2013-02-22 23:58:32

标签: apache caching http-headers browser-cache

我在.htaccess中设置了一个CacheControl声明,供浏览器缓存静态文件。

在连续部署后,如何定义使客户端缓存无效的指令?

<Files *.js>
Header add "Cache-Control" "max-age=604800"
</Files>

1 个答案:

答案 0 :(得分:0)

  

如何定义指令以使客户端的缓存无效?

简短的回答是你不能 - HTTP协议不支持它。

但是有一种偷偷摸摸的方法:创建一个清单html页面,列出所有可缓存的资产,将其加载到iframe中,然后使用Javascript对iframe进行刷新。这将为服务器创建内容的条件请求 - 如果您的服务器以2xx状态响应,则提供的新内容将覆盖缓存。

然而,仅仅因为它可能没有让它成为一个好主意(出于很多原因 - 除非你想付钱给我来提供咨询和培训几周,否则不要问); 请勿在家中尝试此操作!

普遍的共识是,管理缓存的最佳方法是使用非常长TTL提供内容,但要embed versioning information in the URL