有时我的应用需要通过同时jQuery .load()
来电填充多个内容区域。
尽管内容区域加载时间不足100毫秒,但同时发出的请求越多,内容在文档上显示的速度就越慢。有时,对于6个内容区域,这可能长达10-15秒。
负载按如下方式启动:
$("#MyDiv1").load("/My/Controller/Action/1");
$("#MyDiv2").load("/My/Controller/Action/2");
$("#MyDiv3").load("/My/Controller/Action/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?