加载每个静态页面时重新加载相同的javascript文件

时间:2015-06-11 17:01:03

标签: javascript

我有几个静态html页面。所有这些页面都有以下内容

<script src="my-javascript.js"></script>

我不希望浏览器缓存javascript文件,我希望它在页面加载时为每个页面重新加载。

在线搜索之后,我发现了这个技巧:在每个页面添加以下内容

<script src="my-javascript.js?p=changing_value"></script>

如果这样做,我怎样才能在静态html页面(而不是PHP,JSP等)中生成“changing_value”。

或者其他一些解决方案强制在每个页面加载所有页面时重新加载javascript文件?

谢谢!

更新

我无法访问服务器配置。

2 个答案:

答案 0 :(得分:1)

  

在线搜索之后,我发现了这个技巧:在每个页面添加以下内容

更好的解决方案是使用缓存标头告诉浏览器不要缓存文件。使用以下命令配置服务器以提供该文件:

Cache-Control: no-cache
Expires: -1

无论如何,这些都是基本的。

  

如果这样做,我怎样才能生成&#34; changing_value&#34;在静态html页面(不是PHP,JSP等)。

如果您想要查询字符串路由,只是为了完整性:

您可以从Math.random()as Hemadeus points out获取随机值,使用时间戳值。

如果您需要阻止脚本加载(通常是脚本标记),这是document.write剩下的少数几个用例之一:

<script>
document.write('<script src="my-javascript.js?' + Math.random() + '"><\/script>');
</script>

(或将Math.random()替换为Date.now()以使用时间戳)

如果您不需要阻止它,那么使用createElement创建元素可能更干净:

<script>
(function() {
    var s = document.createElement('script');
    s.src =  "my-javascript.js?" + Math.random();
    document.querySelector("head").appendChild(s);
})();
</script>

旧浏览器没有Date.now。您可以从new Date().getTime()获得相同的值。

答案 1 :(得分:1)

您可以使用Javascript时间戳生成changing_value。 所以你将永远有一个新版本的js文件。