如何防止javascript缓存?查询字符串方法不起作用

How can I prevent javascript caching? Querystring approach isn't working

本文关键字:字符串 方法 不起作用 查询 何防止 javascript 缓存      更新时间:2023-09-26

我看到过其他的方法,附加一个版本号或MD5哈希到JS src查询字符串

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

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

这似乎是一个别人已经解决了的大问题,我似乎正在做正确的事情。我怎样才能让它工作?

我添加了日志消息,并确定querystring方法正在工作。很抱歉,你问了这么多不必要的问题。

然而,在研究中,我发现了一些值得提及的要点:

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

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

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

http://davidwalsh.name/prevent-cache

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

2.),您可能需要附加版本,而不是作为查询参数,而是作为文件名的一部分,例如page_v.2.js。例如,如果您正在使用Java,则可以在构建时更改javascript文件名。