0

Ajaxを介して複数の部分ビューをロードする際に、絞り込むことができないわずかな問題が発生しました。

このページは、ボタンをクリックするだけで6つの部分ビューをロードします。

元々、サーバーによって1つのページに部分的なビューがレンダリングされていましたが、これは、処理が連続して実行され、ページがすぐに戻らないことを意味していました。

そこで、実行して非同期のajaxリクエストを実行してすべてを更新するJavaScriptを少し作成しました(これを一時的に簡単にするために、部分的なビューのURLがマークアップでレンダリングされることに注意してください)。

function refreshAllPartials() {
    $('div.partial').each(function () {
        var partialView = $(this);
        var partialViewUrl = $(partialView).attr('partialUrl');
        var parent = $(partialView).parent();
        $(parent).empty();
        $.ajax({
            url: partialViewUrl,
            type: "GET",
            async: true,
            success: function (response, textStatus, jqXHR) {
                $(parent).html(response);
            }
        });
    });
}

さて、問題は、部分ビューリクエストのそれぞれが戻るのに約0.7秒かかる(Fiddlerを使用してチェック)が、Firebugからの出力は何か違うことを示しているということです。

Firebugの出力

フィドラーからの出力は数ミリ秒以内に一貫していますが、ファイアバグの出力とユーザーへの視覚効果は変化し続けているようです。

javascriptがどのように機能し、レンダリングがどのように機能するかについて、私が見逃していることがあると思いますが、おそらく私は何か間違ったことをしているだけですか?

ASP.NET MVC3を使用していますが、IISがタイムリーにデータを返していることをFiddlerが示しているため、関連性があるかどうかはわかりません。

4

1 に答える 1

1

この問題は、コントローラーアクションが、セッション状態への読み取りアクセスのみを必要とするものとしてマークされていないことです。

ASP.NETにはSessionStateの「機能」があり、1つの要求のみがセッションに排他的にアクセスでき、他のすべての要求はその背後で「キューに入れられ」ます。

私がする必要があるのは、セッションへの書き込みアクセスを必要としないアクションメソッドを別のコントローラーに分離し、以下を追加することだけでした。

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]

新しいコントローラーの属性として。

ビオラ、今では非常にパフォーマンスの高いサイト、非常にきびきびとしています。

于 2013-01-15T16:56:25.960 に答える