Javascript性能-使用$.getScript()添加脚本

Javascript Performance - Adding Scripts with $.getScript()

本文关键字:添加 脚本 getScript 性能 使用 Javascript      更新时间:2023-09-26

我目前正在制作一种web应用程序,其中一部分是通过动态加载js脚本并将其添加到页面中来实现的。为此,我使用JQuery的$.getScript()方法将其加载到.中

我已将其设置为缓存。

对于我的程序,如果脚本已经存在,它无论如何都会从缓存中再次加载。但我想知道的是,这会对网站和性能产生多大影响。一个与现有脚本具有相同src的新加载脚本是覆盖前一个脚本,还是将新脚本添加到旧脚本旁边?

此外,由于我的网站是AJAX网站,随着时间的推移,来自不同页面的几个脚本最终可能会被加载。浏览器是否对一个人可以加载的脚本数量有任何限制?

它将影响站点性能。即使您的脚本缓存在带有过期设置的客户端上,浏览器仍然需要解析和执行新包含的脚本。更重要的是,您很有可能会遇到javascript错误,因为您的脚本将覆盖以前版本已经设置的变量。JavaScript解析和执行在所有浏览器中仍然是一个阻塞操作,因此当您的文件被处理时,您的UI将被锁定。

为了回答问题的第二部分,据我所知,给定页面上的javascript文件数量没有限制。我看到过有200多个java脚本的页面,它们没有抛出任何异常。

我认为Ilya提供了一些值得考虑的要点,我认为这回答了您的具体问题。然而,如果您想要完成的是重新运行$(document).ready()处理程序,您可以执行以下操作:

(function(){
    var myreadyfunction = function(){
        $('#affected').toggleClass('blue');
    };
    $(document).ready(myreadyfunction);
    $(document).ready(function(){
        $('button').click(myreadyfunction);
    });
})();

http://jsfiddle.net/Z97cm/

我已经将它划分为一个匿名(function(){})();的范围,以避免出现在全局范围之外,所以如果您需要从该范围之外访问该函数,您可能需要考虑这一点。但这让你大致了解了我在说什么。