在阅读了几个主题之后,我遇到了两个基本的解决方案。
一个涉及要求浏览器不要缓存 - > 使用HTML元标记S1:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv='expires' content="-1"/>
<meta http-equiv='pragma' content="no-cache"/>
它对我不起作用。
其他是在URL之后放置随机数
S2:
<script language="javascript" src="./js/myJS.js?'+ Math.Random()*100+'"/>
这些可以在Chrome和Mozilla上运行,但出于某种原因,它们在IE上不适用于我。
有人知道另一种方法吗?
我无法将S2嵌入脚本块中。如果可以,那么这可能会奏效。
<script>
document.write("<script language=\"javascript\" src=\"./js/myJS.js?'+ Math.Random()*100+'\"/>")
</script>
答案 0 :(得分:1)
您的解决方案2是正确的方法,但您无法编写字符串“&lt; script /&gt;”在&lt; script&gt;内标记,因为它混淆了HTML解析器。有关详细信息,请参阅this question。
您可以通过以下技巧解决此问题:
<script>
<![CDATA[document.write("<script language=\"javascript\" src=\"./jsdir/RS_01_eng.js?'+ Math.Random()*100+'\"><\/script>")]]>
</script>
我还建议您删除language =“javascript”,因为HTML5中不再需要它。
也许你应该从 Math.Random()* 100 切换到 new Date()。getTime()以便有更独特的东西并阻止1在一百次边缘案件中。
答案 1 :(得分:1)
您是否尝试过转义脚本代码?
<script >
document.write(unescape("%3Cscript src='./js/myJS.js?r=" + Math.random().toString().replace('.', '') + "' type='text/javascript'%3E%3C/script%3E"));
</script>
答案 2 :(得分:0)
你试过了吗?
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
答案取自:Using <meta> tags to turn off caching in all browsers?
编辑:我知道你已经尝试了一些元标记,但上面写的类似标记过去对我有用。