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