使用JavaScript在src或href属性上附加时间戳

时间:2015-01-19 08:42:18

标签: javascript jquery html caching timestamp

2天我一直在寻找答案,但我无法找到解决问题的好方法。

我正在开发一个Web应用程序,我只能使用标准的前端文件(HTML,CSS,JavaScript(我使用jQuery))。没有与HTML合并的后端脚本。

我想要实现的是在我的HTML中添加<script>标记,但将时间戳添加为变量,例如:<script type="text/javascript" src="js/javascript.js?c=1421656264439"></script>

使用PHP可以很容易地实现,因为您只需添加时间戳和HTML。但由于我必须只使用前端代码,因此添加带有时间戳的scriptlink标记的最佳方法是什么,因此脚本不会从缓存加载?< / p>

由于客户端使用的是Internet Explorer 10,因此我需要一个可以使用它的答案......

有人可以帮帮我吗?

4 个答案:

答案 0 :(得分:1)

由于您正在使用jQuery,我建议您这样做:

$.getScript( "js/javascript.js" );

来自jQuery docs:

  

默认情况下,$ .getScript()将缓存设置设置为false。这会将带时间戳的查询参数附加到请求URL,以确保浏览器在每次请求时都下载脚本。

答案 1 :(得分:1)

请查看jQuery getScript()

我认为它可以解决您的问题:

  

默认情况下,$ .getScript()将缓存设置设置为false。这会将带时间戳的查询参数附加到请求URL,以确保浏览器在每次请求时都下载脚本。

答案 2 :(得分:1)

动态加载javascript / css。同时加载时添加随机版本。

e.g。 http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml

无论如何,我相信你已经知道你在做什么并不是最好的做法。如果有更具体的要求,可以将JS标头设置为无缓存,以用于JS / css文件。可以在使用的HTTP服务器中设置此信息,而无需编程语言。

How to control web page caching, across all browsers?

答案 3 :(得分:1)

在创建元素,设置属性并将其附加到文档类型时,由于某种原因,未在javascript.js的AJAX调用上设置beforeSend标头。使用$.getScripts('js/javascript.js');

也是问题所在

我突然意识到我可以在脚本标签中尝试一个简单的document.write()。事实证明它就像一个魅力。

我的修复:

    <script type="text/javascript">
        var _c = new Date().getTime();
        document.write('<script type="text/javascript" src="js/javascrtipt.js?c='+_c+'"><\/script>');
    </script>
</body>

(我无法相信我之前无法提出这个解决方案)