【问题标题】:How to force no cache using javascript and basic script loading如何使用 javascript 和基本脚本加载强制不缓存
【发布时间】:2012-03-13 02:01:21
【问题描述】:

我有一个小书签,它一直使用http://www.imvu-e.com/products/hpv/download/HPV.js 的缓存版本。我希望它永远不会缓存它并总是重新加载它。

这是我用来保存书签的超链接(用户将其拖到安装它的浏览器工具栏):

<a href="javascript:(function(){
     c = document.createElement(&quot;script&quot;);
     c.type = &quot;text/javascript&quot;;
     c.src = &quot;http://www.imvu-e.com/products/hpv/download/HPV.js&quot;;

     c.onload = c.onreadystatechange = function()                    {
            if ( ! (d = this.readyState) || d == &quot;loaded&quot; || d == &quot;complete&quot;){
                document.documentElement.childNodes[0].removeChild(c);
                version='beta';
            }
     };
     document.documentElement.childNodes[0].appendChild(c);
})();">Run HPV</a>

【问题讨论】:

  • js / html 的糟糕组合.. 使用 js 框架
  • @yes123 这是一个书签,你应该在 url 中放一个像样的 js 块(因为它需要执行你更复杂的 js 文件的加载)

标签: javascript caching src


【解决方案1】:

在你的 url 末尾添加一个无用的查询字符串:

c.src = "http://www.imvu-e.com/products/hpv/download/HPV.js?" + (new Date).getTime(); 

【讨论】:

  • 必须使用c.src = "http://www.imvu-e.com/products/hpv/download/HPV.js?" + new Date().getTime();
  • @NiCkNewman Date.now() 可能更快,但在 IE6 中不起作用;]
【解决方案2】:

使用 jQuery 的 getScript 代替脚本标记和更改源代码

<script>
   $.getScript("JavascriptFileName.js?timestamp=" + new Date().getTime());
</script>

【讨论】:

  • 我以 SO 审阅者的身份写作,因为您的答案已被标记为质量。回答时请注意,您的答案将来可能会被多次阅读。这使得在其中写下解释性说明变得很重要。请花一两分钟时间编辑您的答案,并添加一些说明您的答案如何以及为何提供解决方案的文字?
【解决方案3】:

纯JS解决方案:

<script> 
var scr = document.createElement("script");
scr.src = "http://example.com/cool.js" + "?ts=" + new Date().getTime();
document.getElementsByTagName("head")[0].appendChild(scr);
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    相关资源
    最近更新 更多