2010-12-27 9 views

答えて

9

任意のWebサイトに適用原則、基礎となるスタックの無関係なのがたくさんあります:

  • HTTPキャッシング機能を使用しています。 1つはユーザエージェントキャッシュです。第二に、Webバックボーン全体があなたの要求をキャッシュすることができるプロキシでいっぱいですので、これを最大限に活用してください。あなたのサーバーに着陸するリクエストでも負荷が0になります。それ以上に最適化することはできません。
  • 上記の点では、静的コンテンツにCDN(Content Delivery Network、CloudFrontなど)を使用してください。 CSS、JPG、JS、静的HTMLなど、多くのページをCDNから提供することができ、WebサーバーをHTTPリクエストから保護することができます。
  • 最初のポイントに2番目の結果:動的コンテンツに有効期限のキャッシュヒントを追加します。 10秒のようなキャッシュ寿命が短い場合でも、クライアントとサーバーの間にあるすべてのプロキシからのヒットが大幅に節約されます。
  • HTTPリクエストの数を最小限に抑えます。基本的なものと思われますが、おそらく最も見逃しやすい最適化です。実際、Yahooのベストプラクティスはこれを最上位の最適化としています。Best Practices for Speeding Up Your Web Siteを参照してください。
    • HTTPが
    • 使用するコンテンツ配信ネットワーク
    • 期限切れになるかのCache-Controlヘッダー
    • をGzipコンポーネント
    • が...(リストがある追加を要求最小化:ここではその賭けの実践のリストですかなり長い実際には、単に上記のリンクを読んで)今

あなたはpossiな限り排除した後、余分なヒットを避けるためには、依然としてサーバーに実際に要求された要求を最適化する必要があります。あなたのASPコードが実行を開始すると、すべてがデータベース要求と比較して見劣りします:

  • ページあたりDB呼び出しの回数を減らします。可能な限り最適な最適化は、明らかに、DBへの要求をまったく開始しないことです。ページあたりの読み込み回数が4回で、1回の書き込みが最も負荷の高いサーバーで処理する必要があり、ページごとに1回のDB呼び出しがあり、ページあたり10回の呼び出しでもOKと言うユーザーがいます。要点は、より多くのものが常により良いことであり、書き込みは読み込みよりもはるかにコストがかかるということです。あなたのUIデザインを見直し、おそらく誰も見ないことをページの隅にそのヒット数が正確な...
  • を使用すると、SQLサーバーに送信するすべての単一のDB要求がに最適化されていることを確認していることである必要はありません。 。それぞれのクエリプランを確認し、適切なcovering indexesがあることを確認し、テーブルスキャンを行わずに、clustered index design戦略を確認し、すべてのIO負荷、ストレージ設計などを確認します。あなたは彼女を取ることができるショートカット、あなたはデータベースの地獄を分析し、最適化する必要があります、あなたのchockingポイントになります。
  • 競合を解消。読者がライターを待たせることはありません。あなたのスタックの場合、SNAPSHOT ISOLATIONは必須です。
  • キャッシュ結果。そして、これは通常、クッキーが崩壊したことです。良いキャッシュを設計することは実際には非常に困難です。 Facebook SOCCの基調講演:Building Facebook: Performance at Massive Scaleをご覧になることをお勧めします。スライド47のどこかに、典型的な内部Facebook APIの外観を示します。

cache_get (
    $ids, 
    'cache_function', 
    $cache_params, 
    'db_function', 
    $db_params); 

すべては、キャッシュから要求され、見つからない場合は、自分のMySQLバックエンドから要求されます。あなたはおそらく60000 serversの考えで始まらないでしょう:)

SQL Serverスタックでは、最良のキャッシュ方法はQuery Notificationsに基づいています。 ほとんどと混ぜてLINQ ...

4

大量トラフィックを、トラフィックを集中的に処理するトラフィックとして定義します。つまり、1つのWebリクエストで複数のSQL呼び出しがトリガーされた場合や、piが多数の小数で計算された場合、重いです。

静的なHTMLを返す場合、今日の良いサーバーが扱えるもの(多かれ少なかれ)よりも帯域幅が問題になります。

MVCを使用しているかどうかに関係なく、原則は同じです。スピードを最適化するためには、

  1. 以上のサーバーなど
  2. 利用高価である
  3. キャッシュデータ (キャッシュをより簡単に追加することになり )データ検索のためのリポジトリ パターンを追加することにより、 が拡大することが容易になりデカップリングアーキテクチャを有します
  4. に書き込まれるデータは、 キャッシュを介して書き込まれるため、クライアントには がないため、実際のデータバスを待つことはできませんe コミット

さらに多くの基本ルールがあります。おそらく、アプリケーションのアーキテクチャーと、計画する必要がある負荷の量について何かを言うことができますか?

+0

+1興味深いです。 –

0

MSDNにはいくつかのリソースがあります。 This particular articleは古いですが、開始です。

私は、MVCスタックについて読んで自分自身を制限することも勧めません。多くの原則はクロスプラットフォームです。

関連する問題