ページが5つあります。 各セクションのレンダリングに約1秒かかります。AJAXまたはマルチスレッドを使用してページの読み込み速度を向上させる
Page_Load()
{
RenderSection1(); //1 sec
RenderSection2(); //1 sec
RenderSection3(); //1 sec
RenderSection4(); //1 sec
RenderSection5(); //1 sec
}
このページの読み込みを高速化したいと思います。しかし同時に、Webアプリケーションの他の部分のパフォーマンスが低下せず、IISもクラッシュしないことを確認してください。
ザ・はいくつかのアプローチです:
は、AJAX要求を使用してください。コントローラまたはWebサービスへのMVCスタイルのリクエストが必要です。
各セクションの周りのUpdatePanelを使用すると、動作しません - 私はここでのアプローチを使用して同時に複数のUpdatePanelsにリフレッシュを提出しようとするので: http://encosia.com/2007/07/13/easily-refresh-an-updatepanel-using-javascript/、 最後の要求は常に勝つ: http://www.codeproject.com/Tips/57035/Simultanious-Async-Requests-Using-Multiple-Update-.aspx使用ASPを。 NETスレッドは、 right way to create thread in ASP.NET web applicationに回答しています。
- は別のDLLまたは外部のWebサービスでアプリケーション・サービス・クラスに、通常は、DBリクエストを時間を取るのロジックを移動... RenderSection1、RenderSection2など:だから私は、コールごとに個別のスレッドを使用します。
OrderDTO GetDataForViewOrder(int orderID)
{
}
、そのDLLで複数のスレッドを使用するような何か。このアプローチは、スケーラビリティが最も優れているようですが、UIの詳細をアプリケーションサービスレイヤに導入します。
どのアプローチがベストだと思いますか、なぜですか?
はい、各RenderSectionには、大部分の時間がかかるDBに対する1つの大きなクエリがあります。私はAsync Sql Queriesをチェックアウトしましたが、ADO.NETのように見えますが、非同期実行を達成するため、他のソリューションと同じ問題が発生する可能性があります。 –
あなたのような重大なケースで実行していないため、私はそれをテストしていません。このメソッドは、AJAXを必要とせずに読み込み時間を短縮できますが、ADO.NETの実装について正しいと仮定して、AJAXメソッドと同様にスレッドを消費します。一方、ASP.NETの非同期ページは、使用されているスレッド数の問題を解決するために特別に設計されているため、非同期ページを調べる必要があるかもしれません。 AJAXシナリオ – Stilgar
ADO.NETの非同期クエリを紹介していただき、ありがとうございます。それらを使用することの1つの利点は、IOスレッドと通常のワーカースレッドを使用することです。 IOスレッドは軽量でIISの制限はワーカースレッドの方がはるかに高いです。だから私はこれが行く方法だと思う。 –