Низкая производительность при одновременном запуске jQuery .load - PullRequest
0 голосов
/ 10 января 2012

Иногда моему приложению необходимо заполнять несколько областей содержимого с помощью одновременных вызовов jQuery .load().

Несмотря на то, что области содержимого загружаются менее чем за 100 мс, чем больше выполняется одновременных запросов, тем медленнее отображается содержимое в документе,Иногда это может длиться до 10-15 секунд для 6 областей содержимого.

Нагрузки инициируются следующим образом:

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

Любые предложения о том, как бороться с этим узким местом, будут оценены.

Ответы [ 3 ]

1 голос
/ 10 января 2012

Попробуйте каскадировать звонки

$('#div1').load('...', function() {
    $('#div2').load('...', function() {
        $('#div3').load('...', function() {
            ....
        });
    });
});
1 голос
/ 10 января 2012

ASP.NET обрабатывает один запрос за раз в рамках одного сеанса.Таким образом, второй запрос не будет запущен, пока не будет выполнен первый.Это чтобы избежать проблем с потоками.Вы должны увидеть некоторые улучшения, если вы используете Sessionless контроллеры.

Проверьте эту ссылку:

Каковы некоторые сценарии использования контроллера без сессии в ASP.NET MVC3?

1 голос
/ 10 января 2012

Это из-за того, как работает JavaScript. Он не будет ждать окончания загрузки содержимого 1, прежде чем начнет загружать содержимое 2 и 3, поэтому все они начнут загружаться в одно и то же время. Поэтому вам следует создать некую очередь.

что-то вроде:

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

обратите внимание, что это не проверено, но оно должно дать вам хорошее представление о том, что вы можете сделать

...