重新加载外部JavaScript文件的最佳和快速练习?

时间:2018-03-07 11:18:55

标签: javascript jquery ajax performance reload

大家好,我有一个很大的疑问.... 在我的javscript代码中,我需要每1分钟重新加载一个js文件(其中有一个多维数组)。 要重新加载它,建议我使用ajax或其他方式?

示例 A

       try { 
          jQuery.ajax({             
            url: "http://www.fake.con/scripts/out/array/week-quakes.js",
            dataType: "script",
            cache: false
          });
        }
        catch(e){
            var aggiungi= '<span>there's error about server</span>';
            $(aggiungi).appendTo('#lista-eq');    
        }

示例 B

$("head script[src='http://www.fake.con/scripts/out/array/week-quakes.js']").remove();


$('head').append('<script type="text/javascript" src="http://www.fake.con/scripts/out/array/week-quakes.js"><\/script>');   

这些代码位于setInterval(function())

然而我的问题还在于,当我的realod js文件可能已经准备好或不存在时,我该如何解决这个问题?

我希望你能帮助我并建议好:)

1 个答案:

答案 0 :(得分:3)

我会选择那样的东西。首先删除旧版本。然后使用新元素创建一个新元素并添加某种&#34; cachebuster&#34;到网址,所以它不会重新加载缓存版本。

let loadJsScript = function(src) {
    let oldScript = $("script[src='" + src + "']"),
        script = document.createElement('script');

    oldScript && oldScript.remove();

    script.type = 'text/javascript';
    script.src = src

    $('head').append(script);
}


loadJsScript('/scripts/out/array/week-quakes.js?cachebuster='+ new Date().getTime());

要每分钟运行一次这个函数,你可以用setInterval函数包装它。

setInterval(function(){ 
 loadJsScript('/scripts/out/array/week-quakes.js?cachebuster='+ new Date().getTime());
},60000)