我正在寻找清除登录页面上某些JavaScript文件的缓存。我们的网络语言非常陈旧,我坚持使用它。没有PHP,Rails,或任何有趣或奇特的东西。
希望清除JS文件上的缓存
1.我不能使用服务器端代码
2.我无法手动附加查询字符串
3.我发现了提到的元标记,但注意到严格引用了缓存HTML。
我唯一的想法是在标题中使用JavaScript来处理HTML文档的文本,然后再将文件加载到页面下方的标记中。虽然我无法成功地使用它。有什么想法吗?
答案 0 :(得分:0)
我假设您的代码中目前有这样的内容:
<script type="text/javascript" src="/site/js/script.js"></script>
如果你不能改变它,你就会被困住。浏览器会在看到标记后立即加载。没有一种可靠的方法可以阻止浏览器这样做,或者在浏览器对其进行操作之前操纵标记。
但是,如果你可以改变它,对我来说最明显的解决方案是将其取出,而是动态地注入一个带有缓存破坏URL的脚本标记。例如(未经测试,但你明白了):
<script>
var scriptUrl = "/site/js/script.js",
cacheBustingUrl = scriptUrl + "?" + Date.now(),
newScriptElement = document.createElement("script")
;
newScriptElement.setAttribute("src", cacheBustingUrl);
document.body.appendChild(newScriptElement);
</script>
这应该在页面末尾附加一个像<script src="/site/js/script.js?1404918388711"></script>
这样的新脚本元素,浏览器将像任何其他脚本标记一样加载。
顺便说一下,如果你已经有了jQuery,那就更简洁了一下:
<script>
var scriptUrl = "/site/js/script.js",
cacheBustingUrl = scriptUrl + "?" + Date.now()
;
$("<script>").attr("src", cacheBustingUrl).appendTo(document.body);
</script>