1

IIS 7.0 でホストされる Classic ASP で記述されたアプリケーションを保守しています。しばらくの間、並行して発生するはずの 3 つの Ajax 呼び出しを連続して行うと、パフォーマンスの問題が発生することに気付きましたが、IIS がそれらを連続して実行しているように見えます。最初の Ajax 呼び出しは時間のかかる呼び出しであり、2 番目と 3 番目のクエリがその前に戻る理由がないため、これは問題です。

私が問題だと思うのは、呼び出し中にセッションオブジェクトが作成され、各呼び出しでセッションに変更を加えていることです。このため、IIS は Ajax 呼び出しをシリアル化すると思います。

私の質問は、セッションのためにこれをロックからオフにする方法はありますか? 使用できる EnableSessionState 属性を見つけましたが、セッションが完全に無効になり、発生したくありません。

ロックを無効にすることがおそらく最善の解決策ではないことはわかっていますが、Ajax 呼び出し間の変数への踏み込みは最小限に抑える必要があります。この問題に取り組む方法に関する提案は大歓迎です。

mj

4

2 に答える 2

1

私の知る限り、セッションを並行して使用する方法はありません。それらは同じ「アパートメント」(STA) で実行されるため、定義ごとにシーケンシャルです。

可能であれば、これは MTA (マルチスレッド) で実行されるため、アプリケーション オブジェクトに値を格納できます。MSXML2.FreeThreadedDomDocument を使用して、各ユーザーの値を格納できます (たとえば、Cookie に格納された一意のキーなどを使用して、ユーザー データをフェッチします)。

于 2012-10-26T06:37:12.160 に答える
0

セッション変数を変更する必要がない場合は、次のようにします。

これを使用して、そのページのセッション状態がオフになっている新しいページを作成します。

<%@ EnableSessionState=False %>

セッションから必要なデータをメイン ページに出力し、そのデータを jQuery 呼び出しで渡します。

于 2012-10-26T04:39:12.973 に答える