如何防止javascript缓存? Querystring方法不起作用

时间:2011-04-04 16:20:06

标签: javascript caching

我见过其他方法将版本号或MD5哈希附加到JS src查询字符串。

e.g. <script src='/script/v1/'></script>

但是,当我推送新版本的网站时,我的JavaScript 仍然在多个浏览器(Chrome,Firefox)中缓存。

这似乎是其他人已经解决的一个主要问题,我似乎正在做正确的事情。我怎样才能让它发挥作用?

3 个答案:

答案 0 :(得分:7)

我添加了日志消息,并确定查询字符串方法 正在运行。抱歉这个不必要的问题。

然而,在研究方面,我发现了一些值得一提的重点:

  1. 其中一篇文章建议使用查询字符串并附加当前时间。您可能不希望遵循此建议,因为您的文件永远不会被缓存。使用源代码控制版本号或MD5哈希会更好。
  2. Steve Souders(High Performance Web Sites成名)注意到某些网络代理从不使用查询字符串缓存任何内容。因此,版本号应嵌入到文件的路径中,以确保在通过这些代理访问时适当地缓存文件。 (http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

答案 1 :(得分:1)

它将始终缓存。虽然,通过使用版本号(或任何其他变化的字符串),每次都会下载并使用新版本,而忽略前一版本。

http://thecrmgrid.wordpress.com/2007/10/22/prevent-caching-of-javascript-include-files-during-development/

http://davidwalsh.name/prevent-cache

答案 2 :(得分:0)

1.)确保javascript文件的响应头是正确的,包括expires,cache-control等。

2.)您可能不得不将该版本作为查询参数附加,而是作为文件名的一部分,例如page_v.2.js。您可以在构建时更改javascript文件名,例如,如果您使用的是Java。这就是我所做的。