我有几个静态html页面。所有这些页面都有以下内容
<script src="my-javascript.js"></script>
我不希望浏览器缓存javascript文件,我希望它在页面加载时为每个页面重新加载。
在线搜索之后,我发现了这个技巧:在每个页面添加以下内容
<script src="my-javascript.js?p=changing_value"></script>
如果这样做,我怎样才能在静态html页面(而不是PHP,JSP等)中生成“changing_value”。
或者其他一些解决方案强制在每个页面加载所有页面时重新加载javascript文件?
谢谢!
更新
我无法访问服务器配置。
答案 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文件。