同时启动jQuery .load时性能下降

时间:2012-01-10 12:18:52

标签: jquery simultaneous

有时我的应用需要通过同时jQuery .load()来电填充多个内容区域。

尽管内容区域加载时间不足100毫秒,但同时发出的请求越多,内容在文档上显示的速度就越慢。有时,对于6个内容区域,这可能长达10-15秒。

负载按如下方式启动:

$("#MyDiv1").load("/My/Controller/Action/1");
$("#MyDiv2").load("/My/Controller/Action/2");
$("#MyDiv3").load("/My/Controller/Action/3");
...

任何有关如何对抗这一瓶颈的建议都将受到赞赏。

3 个答案:

答案 0 :(得分:1)

这是因为javascript的工作方式。在开始加载内容2和3之前它不会等到完成加载内容1所以它将同时开始加载..所以你应该创建一些que。

类似的东西:

load array = new array()
array[array.length+1]= "/My/Controller/Action/1";  
array[array.length+1]= "/My/Controller/Action/2";  
array[array.length+1]= "/My/Controller/Action/3";  
loadContent();   
function loadContent()    
{
$("#MyDiv").load(array[0] function(){
        array.shift();
       if(array.length>0)
          loadContent() ; 
    });
}

请注意,它未经过测试,但它可以让您对自己能做的事情有一个很好的理解

答案 1 :(得分:1)

尝试级联通话

$('#div1').load('...', function() {
    $('#div2').load('...', function() {
        $('#div3').load('...', function() {
            ....
        });
    });
});

答案 2 :(得分:1)

ASP.NET在同一个Session下一次处理一个请求。因此第二个请求在第一个请求完成之前不会运行。这是为了避免线程问题。如果使用无会话控制器,您应该会看到一些改进。

点击此链接:

What are some scenario's of having a Session-less Controller in ASP.NET MVC3?