我有一个javascript函数(让我们称之为“loadScript”),绑定到单击按钮。在“loadScript”中,我运行以下代码:
if (typeof object == 'undefined') {
var script = document.createElement('script');
script.src = "/js/myscript.js";
script.onload = function () {
console.log("Script just loaded!");
};
document.head.appendChild(script);
} else {
console.log("Script already available");
}
注意,“object”是一个位于myscript.js文件中的javascript对象,我测试它是否存在,以便知道脚本是否可用。
因此,我第一次单击按钮,脚本被加载,一切都按预期工作,第二次单击按钮脚本已经可用,因此不会发生加载。 现在,如果我浏览另一个页面(在同一个站点和应用程序上)并且立即回到第1页,单击该按钮将再次加载脚本!喜欢它没有缓存或其他东西。
我还尝试 $。getScript 以及使用 $。ajax({cache:true})的完整版本,甚至设置 $ .ajaxSetup全局({cache:true})。 没有解决这个问题。
更新01
我还尝试将script
元素直接放在我页面的head
内,并为其添加了async
属性,这样用户就不必等待整个事情为了查看页面。结果:脚本也不缓存。
只有在我删除async
属性后它才变为“可缓存”但是嘿,这个问题的重点是加载脚本并保持缓存,就像普通的外部资产一样!