2009-06-21 4 views
1

サーバ側の作業をすべて終了する前に、ページ応答を返すことは可能ですか?サーバー側の作業が遅くなる前にASPページを返すことは可能ですか(例:ロギング)

いいえデータベースなしで安いホスティングアカウントを持っていますが、別のより高価なホスティングアカウントでウェブサービスを呼び出すことで特定のイベントを記録したいと思います(つまり、非常に遅いログ操作)

この遅いロギング操作がページがレンダリングされる前に完了するのをユーザーが待つ必要はありません。

新しいスレッドをスピンアップする必要がありますか、非同期呼び出しを行う必要がありますか?あるいは、ページを返すことは可能ですか?そして、同じスレッド/コードでうまくいっていきますか? ASP.Net(Webフォーム)を使用して

C#.NET 2.0など

答えて

2

おそらく2番目のスレッドが必要です。簡単なオプションはThreadPoolを使用することですが、より洗練された設定ではプロデューサ/コンシューマキューがうまく動作します。最も単純なレベルでは

ThreadPool.QueueUserWorkItem(delegate { 
     DoLogging(state details); 
    }); 
1

あなたは必ずすることができます - Response.Flushを試してみてください。

これは、非同期呼び出しを作成することが、あなたがしたいことを実行する最善の方法かもしれないと言われています。 Response.Flushは単に出力バッファをクライアントにフラッシュするため、非同期呼び出しではロギングコールを切断でき、クライアントのロード時間に影響を与えません。

ASP.NETでページのライフサイクル中に行われた非同期呼び出しが、応答に何かを行うために時間内に返されないことがあることに注意してください。

+0

うわー!高速応答(とマークも)。ロギングはかなり火事になり、忘れてしまうでしょう。私はこれらの方法の両方を試して、私の人差し合いがどのように変化するかを見てみましょう! Ta –

関連する問題