事例として、各ページの読み込みにかなりの時間を必要とする多くの.aspx Webサイトにアクセスしました。
私の経験はユニークですか?
そうでない場合、ASP.Net Webサイトの読み込みが遅いのはなぜですか?
編集:約7年後(12/29/2017)になりました。良いニュースは、この問題はもうあまり見られないことです。おそらく、Googleが読み込みが遅いサイトにペナルティを課し始めたためでしょう。現在、ASP.NET MVCを使用して良好な結果を出しており、現在Vultrプライベート仮想サーバーで実行しています(Azureを試したところ、速度が遅すぎました。)現在表示されている最悪の違反者の一部は、WordpressのようなCMSシステムです。 Drupal、おそらくサイトが取得するトラフィックの量に対して遅すぎるか、仕様が不十分なハードウェアで実行されています。 -HK1
私が考えることができる5つの可能性(いくつかの高度なキャッシングテクニックなどは別として):
ASP.NETのWebサーバー の不適切なサイズ設定(つまり、 クラシックASPのサイズのサーバー は問題ないと考えました)
削除を忘れる<compilation debug="true"/>
web.configおよび 最適なコードより少ない から。
[〜#〜] jit [〜#〜] 初めての訪問
ページに埋め込まれたコード (コンパイルされた分離コードとは対照的に)、JITの前およびJITに加えてコンパイルが必要です。
どうやらこれは答えに値するかもしれません。
多くの要因が影響する可能性があります。この瞬間を使用しているサイトは.NET上に構築されており、通常は非常に高速です(ダウンタイム/メンテナンス期間を除く)。
あなたが行くそれらのサイトの開発者はあなたにたくさんのデータを押したり、遅い接続、または過負荷のサーバーなどを使っているかもしれません。また、多分プレイ中に非常識なJavaScriptを使用していて、IEを実行していますか?またはフラッシュ?
何をしているのか本当にわからない場合は、ASP.NET WebFormsを使用すると、フォームのコントロールをドロップすることで、httpのステートレスな性質を隠蔽することさえできます。それは機能しますが、特にデータアクセスレイヤーに、インデックスのないSQL Expressデータベースからすべてを選択する生成されたクエリが含まれる場合、そのような開発では効率的なコードは生成されません。
Webアプリケーションが実際にどのように機能するかを理解している人々によって開発された、高速のasp.net Webサイトはたくさんあります。これにはこのサイトが含まれます-個々の要求の処理をより詳細に制御し、.aspx拡張子を表示しないASP.NET MVCを使用します。
私が同じことに気づいたので、ここでただの推測です。 .aspサイトtend(Wordに注意してくださいtend)は、会社のサーバーでセルフホストされるのではなく、データセンターで、またはデータセンターでホストされます。したがって、それらはハードウェア上で実行されることが多く、実際には高速Webトラフィック用に設計されていない接続です。常温核融合が推進するサイトもこれに苦しんでいると思う。
Webサイトが読み込まれると(application.startイベント)、すべてをメモリに読み込むのに時間がかかります。 IIS設定に応じて、約20〜30分間非アクティブになると、アンロードされます。サービスを実行せずにアプリケーションを常に実行し続ける適切な方法はありませんGET
10分以上ごと。
不適切に設計されたバックエンド/データレイヤーは、(コンピュータが実行しているコンピュータの速度に関係なく)実行速度を遅くする可能性があります。プロファイリングは、問題の場所を特定するのに役立ちます。
あなたは間違いなくこれを想像しています。 :)
ソフトウェアには多くの要因が関係しています。アーキテクチャ、コードフローの冗長性、コードの品質など。リストし始めるには多すぎます。
ASPがエンタープライズレベルの使用に適していることを証明したいですか?このサイト(およびすべてのSE)WebサイトはASP.Net、特にMVCを使用して作成されています。
このサイトの速度が最後に低下したのはいつですか。私は1年以上ここにいますが、その膨大なユーザーベースにもかかわらず、物事が進行していることに気づいたことは一度もありません。
ビューステートはポストバックを実際に遅くする可能性があります。ページに大きなドロップダウンリストがいくつかある場合は、それらのビューステートを使用しないでください。
ビューステートを使用すると、ステートフルなwinformsアプリで作業しているように見せかけることができます。それは時々あなたを困らせることができます。
上記のすべてが当てはまる可能性があります。私が取り組んだASP.NETサイトのパフォーマンスに影響を与えた最大の要因は、それに関連するすべてが古いことでした。 .NETフレームワークのバージョン、サーバー、データベースインフラストラクチャ、およびコード自体はすべて古くなっていた。
多くのASP.NETサイトは企業サイトである傾向があると思います。これらは動作するだけになる傾向があるため、あまり愛されません。必要になるまで、人々はそれらを書き直しません。これは、多くの場合、非常に長い道のりです。
私が使用したASP.NETで作業したサイトは、はるかに効率的なJITと正気なキャッシュのデフォルトを備えたフレームワークの最新バージョンに移動することで、大幅なスピードアップjustを得たことを知っています。
ASP.NETサイトの多くが適切にスケーリングする方法を知らないことをもう1つ見ました。コミュニティでは、Webガーデンで正しく動作するようにサイトを設計することは一般的ではなく、十分に文書化されていないため、適切な負荷分散が設定されていません。最初からWebガーデン用にサイトを設計しない場合、IISが備えている組み込みのスケールアウトメカニズムを使用できません。WindowsNLBを使用したソフトウェアの負荷分散はそれほど重要ではありません。一般的であり、管理が複雑です(これは、ASP.NETが企業ソフトウェアである傾向があり、この構成を正しく構成する方法を知っているIT専門家ではなく、サイトを運営している会社が管理する傾向があるという事実を思い起こさせます)。
F5によるハードウェアロードバランシングは非常に高価ですが、企業ネットワーク内のASP.NETサイトをスケールアウトするための最も一般的でシンプルなメカニズムのようです。オープンソースの群衆の間では、使用量に基づいて自動的にスケールアウトする無料で入手できるオープンソースツールを使用して、最初からロードバランシングを組み込むことが期待されていると思います。これは、ASP.NETの世界では一般的な見方ではありません。