如何防止缓存我的Javascript文件?

时间:2011-09-14 08:15:56

标签: javascript caching

我有一个简单的html:

<html>
<body>
<head>
<meta charset="utf-8">
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
<script src="test.js"></script>
</body>
</html>

在test.js中我更改了Javascript函数,但我的浏览器正在缓存此文件。如何禁用脚本src的缓存?

5 个答案:

答案 0 :(得分:150)

将随机查询字符串添加到src

您可以通过每次进行更改时递增查询字符串来手动执行此操作:

<script src="test.js?version=1"></script>

或者如果您使用的是服务器端语言,则可以自动生成:

ASP.NET:

<script src="test.js?rndstr=<%= getRandomStr() %>"></script>

有关缓存清除的更多信息,请访问:

https://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/

答案 1 :(得分:29)

<script src="test.js?random=<?php echo uniqid(); ?>"></script>

编辑:或者您可以使用文件修改时间,以便将其缓存在客户端上。

<script src="test.js?random=<?php echo filemtime('test.js'); ?>"></script>

答案 2 :(得分:12)

Configure your webserver为脚本发送缓存控制HTTP标头。

HTML文档中的假标题:

  1. 不如真正的HTTP标头支持
  2. 应用于HTML文档,而不是应用于链接到
  3. 的资源

答案 3 :(得分:11)

您可以将queryString附加到src并仅在您发布更新版本时更改它:

<script src="test.js?v=1"></script>

通过这种方式,浏览器将使用缓存版本,直到指定新版本(v = 2,v = 3 ...)

答案 4 :(得分:6)

您可以将随机(或日期时间字符串)作为查询字符串添加到指向您的脚本的网址。像这样:

<script type="text/javascript" src="test.js?q=123"></script> 

每次刷新页面时,都需要确保“q”的值已更改。