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 のロードが完了するのを待たずに、すべて同時にロードを開始します。そのため、ある種のキューを作成する必要があります。

何かのようなもの:

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 は、同じセッションで一度に 1 つの要求を処理します。したがって、最初のリクエストが完了するまで、2 番目のリクエストは実行されません。これは、スレッド化の問題を回避するためです。セッションレス コントローラーを使用すると、改善が見られるはずです。

このリンクをチェックしてください:

ASP.NET MVC3 でセッションレス コントローラーを使用するシナリオにはどのようなものがありますか?

于 2012-01-10T12:30:26.307 に答える