2009-04-11 10 views
1

私はオンラインのニュースポータルを構築しましたが、その前に私にとってうまくいきましたが、ホームページの速度が少し遅いと言う人もいます。私がそれを考えるとき、私はそれが理由であると思う。データアクセスASP.NET

サイトのホームページが表示さ

  1. 見出し
  2. スポットニュースのタイトルとして(サブヘッドライン写真と
  3. スポット
  4. ほとんど読んでニュースを()
  5. ほとんどのコメントニュース(
  6. 各ニュースカテゴリから5つのニュースタイトル(スポーツ、経済、地方、健康など合計11件) など。)

ここで、これらのそれぞれは、dbに対する個別のクエリです。私はテーブル・データセットとデータ・セット(標準データ・アクセス・シナリオ)を持っているので、テーブル・アダプターによってデータ・テーブルを返すニュース・クラスのビジネス・ロジックを呼び出します。そこから、データテーブルをコントロールにバインドするだけで使うことができます。あるいは、オブジェクトはニュースのリストに変換して、そこから消費します。

上記のそれぞれに対してこれを行うと、うまくいくようです。少なくともそれは大きな負荷をかけません。しかし、より良い方法があるのか​​どうか疑問に思います。

たとえば、私が上で説明したプロジェクトは非常に動的なウェブサイトであり、ニュースは代理店から24時間ノンストップで到着すると挿入されます。この場合のキャッシングは良いとは思わないかもしれません。一方で、私は地元の新聞のための別の同様のプロジェクトを知っています。サイトは1日1回更新されます。この場合、 今日のために挿入されたすべてのニュースアイテムを含むデータテーブルを返し、そのデータテーブルをクエリし、見出し、スポット、およびその他のアイテムをサイトのそれぞれの場所に配置できるクエリを1つだけ実行できますか?それとももっと良い選択肢がありますか?私は、他の人が最も効率的な方法で同様の作業をどのように実行しているのか見逃しています。

答えて

2

FireBugを使用して、読み込みに時間がかかる要素を調べるべきだと思います。時には大きな画像がショーを台無しにすることがあります(また、画面上の画像のサイズが常にダウンロードサイズに比例するとは限りません)。

第2に、Yahoo FirefoxプラグインYSlowをダウンロードして、スクリプトが遅いかどうかを調べることができます。

しかし、Firebugはあなたに最高のレビューを与える必要があります。 Firebugを読み込んだ後、[Net]タブをクリックして、ページ内の各要素の読み込み時間を表示します。

+0

+ 1クライアント側のプロファイリングにFirebugとYSlowを使用する場合+1。 – Anthony

2

パフォーマンスが低下している場合は、まず最初に手をつけてください。 コードをプロファイルします。なぜそれが遅いのかを正確に調べる。ページを送信したり、レンダリングしたり、実際にページを動的に生成したりするのが減速していますか? 1つのクエリが長すぎますか?

ボトルネックがどこにあるのかを正確に突き止め、その心臓部で問題を攻撃します。

キャッシュは、コンテンツがかなり迅速に更新される場合でも、非常に良いアイデアです。キャッシングメカニズムがインテリジェントである限り、生成時間は大幅に短縮されます。フォーラムとは対照的なニュースポータルやブログの場合、キャッシュシステムを使用してパフォーマンスを大幅に向上させる可能性があります。

1

遅延がデータベースから発生している場合は、テーブルをチェックし、テーブル内のデータ量に応じて、インデックスが適切に作成されているか、クラスタ化されているか、必要なものがあるかを確認します。また、動的クエリを使用している場合は、代わりにストアドプロシージャを実行してください。

1つのデータベース要求で複数のクエリを実行したい場合は、次の操作を実行できます。最初は、すべてのクエリが何らかの理由で実行されるまでデータを表示していないので、他の問題がなければ、少なくともクエリごとにDBに再度アクセスする時間が節約されます。 DataSetsはテーブルのコレクションを保持しますが、同じ要求内の複数のクエリによって生成できます。

ASP.NETには、既にキャッシング(HttpContext.Cache)のための素晴らしい機能が用意されています。これをラップアラウンドして使用しやすくしています。キャッシュされたオブジェクトに寿命を設定できるので、記事やタイトルが最新ではないことを心配する必要はありません。

このWebサイトでWebFormsを使用している場合は、ページを少しだけ読み込みやすくするために、本当に必要のないコントロールに対してViewStateを無効にします。

まだ何かをする前に、Anthony suggestedとし、あなたのコードをプロファイルしてください。他の多くの調整や変更は、ページ読み込みを高速化するためにはもちろんです(gzip、スクリプトの最小化など)。本当の問題が何であるかを知る。