3

各家族が(ロールオーバー時に)個々の家族に関する追加情報(居住地情報とその場所の3つの画像)を含むツールチップを表示する家族のリストがあります。

では、ベストプラクティス(パフォーマンス)は何をするのでしょうか?最初にすべてのデータをプリロードするか、必要な場合にのみ(ロールオーバー時に)データをajaxリクエストしますか?

ページにはすでに3つのselectmysql_queriesが含まれており、ツールチップのデータフェッチにはさらに2つ必要であることに注意してください。

クエリ(検索の複雑さのアイデアのために):

元の3つのクエリ:

SELECT * FROM news ORDER BY bDate DESC LIMIT 5;
SELECT * FROM family ORDER BY created DESC LIMIT 5;
SELECT bplace.placeID, bplace.sName, bplace.countryID, bcountry.regionID FROM bplace, bcountry WHERE bplace.countryID = bcountry.countryID ORDER BY created DESC LIMIT 5;

ツールチップ2クエリ(プリロード方法):

while(...){

$allFamilies[] = $row["familyID"];

}

$allFamilies = implode(',',$allFamilies);

SELECT sName FROM bplace WHERE placeID IN ($allfamilies);
SELECT url FROM images WHERE placeID IN ($allfamilies);

ツールチップ2クエリ(ajax方法):

SELECT sName FROM bplace WHERE placeID='1';
SELECT url FROM images WHERE placeID='1';
4

3 に答える 3

2

アプリケーションがどれだけ大きくなるかを考える必要があります。数千行を取得すると、IN クエリは実際に遅くなります。ajax クエリは、直接ルックアップであるため、常に高速に読み込まれます。

また、データをキャッシュできる場合、ajax 呼び出しを CDN に直接提供すると、ほぼ瞬時に読み込まれます。常にデータをプルし、スケーリングする必要がある場合、ajax メソッドは主キーのルックアップであるため、キーストアでも使用できます。

于 2012-08-30T14:42:58.390 に答える
2

あなたの質問に対する一般的で決定的な答えがあるかどうかはわかりません。

ある種のパフォーマンスを測定するには、より多くの変数を考慮に入れる必要があります。

  • ページごとに読み込まれるツールチップの数
  • 返されるデータの大きさ
  • クライアントとサーバー、サーバーとデータベースの間の接続はどうですか。
  • クエリにかかる時間
  • それらのページを同時に閲覧するユーザーの数
  • キャッシュが関係しています

などなど。

しばらく前のプロジェクトで非常によく似た質問があり(ツールチップにも関連していました)、主に最初のページロードを可能な限り高速化したかったため(スクリプトの長さを短くし、htmlサイズを小さくしたかったため)、ajaxを使用しました。 . 多くのユーザーがすべてのツールチップを同時にブラウズする場合、ajax の方法は実際にはより多くの「パフォーマンス」を消費しますが、このプロジェクトでは明らかにそうではありませんでした。

于 2012-08-30T14:43:07.057 に答える
2

少しの常識で全部好みだと思います。プリロードされた 1000 行は、取得、ループ、および表示に少し時間がかかります (ページ サイズが数キロバイト大きくなります)。グラブされる行が数行だけの場合は、AJAX がロードするのを待つよりも、それらの行をグラブする方がおそらく理にかなっています。

考慮すべきもう 1 つのことは、データが変更されるかどうか、および頻繁に変更されるかどうかです。ツールチップ データが常に変更されている場合は、AJAX を使用することをお勧めします。ほとんどが静的である場合、すべてをまとめて取得することはおそらく理にかなっています。

Ajax には時間がかかる場合がありますが、サーバーのボリュームが非常に大きく、それに応じて拡張していない限り、これらのリクエストはほんの数秒しかかかりません。

最終的には個人の好みです。あなたにとって何が簡単でしょうか?各ツール ヒントをハード コーディングする方が簡単ですか、それとも JavaScript を使用してツールヒント データを呼び出す方が簡単ですか? より簡単で、あなたのサイトでよりよく流れるように見えるものを選んでください.

于 2012-08-30T14:38:20.860 に答える