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

使用JavaScript在src或href属性上附加时间戳,javascript,jquery,html,caching,timestamp,Javascript,Jquery,Html,Caching,Timestamp,两天来我一直在寻找答案,但我找不到解决问题的好办法 我正在开发一个web应用程序,在这里我只能使用标准的前端文件(HTML、CSS、JavaScript(我使用jQuery))。没有与HTML合并的后端脚本 我试图实现的是在我的HTML中添加一个标记,但添加一个时间戳作为变量,例如: 使用PHP很容易实现,因为您可以将时间戳与HTML一起添加。但是由于我必须只使用前端代码,那么添加带有时间戳的脚本或链接标记的最佳方法是什么,这样脚本就不会从缓存中加载 由于客户端使用InternetExplore

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

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

我试图实现的是在我的HTML中添加一个
标记,但添加一个时间戳作为变量,例如:

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

由于客户端使用InternetExplorer10,我需要一个答案,这将与工作


有人能帮我吗?

既然您正在使用jQuery,我建议您这样做:

$.getScript( "js/javascript.js" );
从jQuery文档:

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

请看一看

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

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


动态加载javascript/css。此外,在加载时添加随机版本

e、 g

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


在创建元素、设置属性并将其附加到文档中时,由于某种原因,
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>

var_c=new Date().getTime();
文件。写(“”);

(我不敢相信我不能更早地提出这个解决方案)

您可以使用javascriptlike
var script=document.createElement('script')动态添加脚本元素;script.setAttribute('src','js/javascript.js?c='+(new Date()).getTime());document.head.appendChild(脚本)虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。您的建议确实有意义。谢谢。哇,我不知道你能做到!在IE10中有没有合适的方法来测试这一点?使用IE的开发者工具。在网络选项卡中看到HTTP代码,200意味着它已经被再次加载。这是显而易见的,但如果我在Chrome中检查,我会看到一个名为“无缓存”的请求头(因此我可以假设它正在工作),但它不在IE10的请求头中。这是可行的,有点。。。它确实加载了一个时间戳!但是,我在javascript.js文件中的所有AJAX调用似乎都没有表现出应有的行为。它们中没有一个发送Reuqest头,这是我在脚本中设置的,导致我的AJAX函数失败。不幸的是,不能这样做…:(