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

时间:2012-03-11 22:25:51

标签: javascript jquery performance

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

我将其设置为缓存。

使用我的程序,如果脚本已经存在,则无论如何都会从看似缓存的内容中再次加载。我想知道的是,这会对网站和性能造成多大影响。新加载的脚本与现有脚本具有相同的src是否会覆盖旧脚本,还是与旧脚本一起添加的新脚本?

此外,由于我的网站是一个AJAX网站,因此可能会有来自不同页面的多个脚本最终被加载。是否有任何浏览器限制可以加载多少脚本?

2 个答案:

答案 0 :(得分:2)

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

要回答问题的第二部分,据我所知,给定页面上的javascript文件数量没有限制。我看过有超过200个javascripts的页面没有任何例外。

答案 1 :(得分:1)

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

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

    $(document).ready(myreadyfunction);

    $(document).ready(function(){
        $('button').click(myreadyfunction);
    });
})();

http://jsfiddle.net/Z97cm/

我已将其范围限定为匿名(function(){})();以避开全局范围,因此您可能需要考虑如果您需要从该范围外访问该函数。但这可以让你大致了解我在说什么。