没有缓存带有Dinamically的.js文件。为什么会这样?

时间:2017-08-04 13:31:04

标签: javascript caching asynchronous

我有一个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属性后它才变为“可缓存”但是嘿,这个问题的重点是加载脚本并保持缓存,就像普通的外部资产一样!

0 个答案:

没有答案