0

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

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

加载按如下方式启动:

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

任何有关如何应对这一瓶颈的建议将不胜感激。

4

3 回答 3

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() ; 
    });
}

请注意,它没有经过测试,但它应该让您很好地了解您可以做什么

于 2012-01-10T12:26:49.347 回答
1

尝试级联呼叫

$('#div1').load('...', function() {
    $('#div2').load('...', function() {
        $('#div3').load('...', function() {
            ....
        });
    });
});
于 2012-01-10T12:26:51.503 回答
1

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

看看这个链接:

在 ASP.NET MVC3 中拥有无会话控制器的一些场景是什么?

于 2012-01-10T12:30:26.307 回答