6

Web アプリをプログラミングするために C#.net を学習しようとしています。

そして、stackoverflow が C#.net を使用していることを知ったので、それを発見してうれしく思います。

ページを更新するたびに、ホームページまたは質問セクションで気づきました。このページは、常に最新の情報を確実に、許容できる速度で返します。

どうやってやるのかわかりません。長い質問の連続で申し訳ありません。データの取得、ページング、パフォーマンスなどのベスト プラクティスについて学習しようとしています。

ホームページでは限られた数の質問とその統計しか返されないことはわかっていますが、質問セクションでは実際にはすべてが返されます。

どのように最適化しますか?

  1. ホームページでは、最近の質問のすべての統計情報を常に取得していますか? あなたのクエリは「select * from question order by datetime_created limit 20」のようなものですか?

    *には、質問のタイトル、ID、ビューなどを含むすべての情報が含まれていますか?

    それを助けるために HttpContext.Current.Server.cache を使用しますか?

  2. 質問については、これはさらに興味深いものです。

    ページングは​​どのように行いますか?

    特定のページの結果のみを常にデータベースから取得しますか?

    それとも、すべての結果を取得してデータセットに保存しますか? 次に、ページングを支援するために何らかのデータグリッド コントロールを使用しますか?

後者の場合、更新されるデータをどのように維持しますか?

4

4 に答える 4

12

ここスタック オーバーフローでは、多くのレベルで積極的なキャッシュを使用しようとしています。

  • ユーザー認証に関係なく、IIS の出力キャッシュによって完全にキャッシュされたページ
  • 匿名ユーザー用にのみキャッシュされたページ。登録ユーザーには最新のコンテンツが表示されます
  • 全員のためにキャッシュされたページの HTML の一部。HttpRuntime.Cacheこれに使用されます

ホームページは、キャッシュされた 3 つの HTML 部分 (最近の質問、最近のタグ、最近のバッジ) で構成されており、それぞれ期間が異なります。

質問リスト ページInt32[]は、特定の並べ替え/タグ フィルターのすべての質問の ID ( ) をキャッシュし、ページングを簡単にします。統計 (質問数、関連するタグ数など) のさらなるキャッシュも同様に行われます。

匿名ユーザーは質問詳細ページが丸ごとキャッシュされ、登録ユーザーは最新の商品が見られます。また、側面の関連する質問は、より長い期間ディスクにキャッシュされます。

可能な限りページ全体をキャッシュするように努めていますが、ページの上部にユーザー情報を表示しています。キャッシュできない部分もあります。

キャッシュをパズルのように見てみましょう。すべてのリクエスト間で安全に共有できるのはどの部分でしょうか? 費用に基づいて、すべてのリクエストでどの部分を共有する必要がありますか?

于 2009-09-23T09:04:54.763 に答える
1

SO は MVC と LINQ2SQL を使用します。ポッドキャストをいくつか聞いて、詳細を把握しました。彼らが多くのキャッシュを使用していることは知っていますが、ホームページの質問リストが含まれているかどうかはわかりません.

于 2009-03-24T07:15:11.397 に答える
1

彼らがどのようにそれを行ったのかわかりません-私はSOを書きませんでした。

このような場合、質問クラス全体とそのすべての回答に対して、ある種のキャッシュ メカニズムを使用します。キャッシュは短命ですが、新しい/ホットな質問は非常に頻繁に表示されるため、存続します。古い質問は、DB から要求する必要があります。これにより、ある人が質問に回答し、別のスレッドが質問を表示しているときに、スレッド化の問題も回避できます。

ここで気付くもう 1 つのことは、AJAX が多用されていることです。しかし、AJAX.Net は非常に帯域幅を浪費するため、AJAX 呼び出しを実装して単純な JSON オブジェクトを返すようにしました。でっち上げの例であり、今は確認することができないため、何が起こるかを代表するものではありません)

{"status": "ok", "votes": 3}

AJAX.Net はUpdatePanelのコンテンツ全体を返します。そのサイズがどんなに小さくても、それでも非常に大きくなります。

于 2009-03-24T08:38:39.447 に答える
0

このStack Overflow Inspired Knowledge Exchangeも参照してください。

Stack Overflow をエミュレートしようとする一連の記事です。CodePlex でコードベースを見つけることができるはずです

于 2009-09-23T10:03:19.060 に答える