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

Append timestamp on src or href attribute with JavaScript

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

我正在开发一个只能使用标准前端文件的 Web 应用程序(HTML、CSS、JavaScript(我使用 jQuery)) .没有与 HTML.

合并的后端脚本

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

使用 PHP 实现起来会很简单,因为您只需将时间戳与 HTML 一起添加即可。但是由于我必须只使用前端代码,添加带有时间戳的 scriptlink 标记的最佳方法是什么,这样脚本就不会从缓存中加载?

由于客户端使用 Internet Explorer 10,我需要一个适用于该浏览器的答案...

谁能帮帮我?

因为你正在使用 jQuery 我建议你这样做:

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

来自 jQuery 文档:

By default, $.getScript() sets the cache setting to false. This appends a timestamped query parameter to the request URL to ensure that the browser downloads the script each time it is requested.

请看jQuery getScript()

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

By default, $.getScript() sets the cache setting to false. This appends a timestamped query parameter to the request URL to ensure that the browser downloads the script each time it is requested.

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

例如http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml

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

How to control web page caching, across all browsers?

在创建元素、设置属性并将其附加到文档时,在 javascript.js 的 AJAX 调用中未设置 beforeSend headers一些原因。这也是使用 $.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>

(真不敢相信我没能早点想出这个解决方案)