2010-12-06 6 views
3

私はほぼ独占的にAJAXに基づいている画像/プロファイル検索アプリケーションの種類を開発しています。メインページは、基本的にプロフィール画像を表示し、ユーザーがそれらをフィルタリング/検索してページ付けすることを可能にします。パフォーマンスチューニングAJAXヘビーアプリケーション

ページネーションはユーザーがスクロールしたときに機能するため、インターフェイスは非常に高速である必要があります。メインページに表示されるのはわずか6(多分9、しかし間違いない)の画像だけなので、ユーザーはたくさんスクロールします。私は現在、非常にシンプルなJSキャッシュを使用して、ユーザーが戻ってくることを決定した場合に備えて、すべてのリクエストの結果を保存しています。その場合、サーバーに問い合わせるのではなく、キャッシュからすべてを取り出します。私が考え

クライアントキャッシュ

1つのオプションは、事前にロードすることです前の10ページと言うと、キャッシュに格納します。

しかし私の最大の問題はフィルタリング/検索です。これはサーバーに送られるクエリのタイプを完全に変更するためです。私のフィルタはあまり複雑ではなく、たったの6-7文字列/数/列挙型属性です。

キャッシュですべてのフィルタ処理を実行したい場合は、すべての検索ロジックを複製し、すべてのデータをサーバーから取得する必要があります(表示するデータだけでなく)。クライアント側の結果

ここに質問がありますが、キャッシュを何らかの形で永続化する必要がありますか?多分それをクッキーに入れておいて?

サーバーキャッシュ?

提案は、にあるかもしれません。サーバー上でmemcachedを使用し、そこにすべてを保存してください。私は可能な限りすべての結果をキャッシュに残していますが、サーバーが負荷と負荷のかかるAJAX要求を処理することはありません。

私はこのアプリケーションをRails 3で開発しています。私はそれを愛していますが、世界で最も速いとは言いません。 これは、AJAXリクエストのみを処理するために別のRack/Sinatraアプリケーションを作成することです。これは、すべてのAJAXではなく、メインクエリからのリクエストを意味します。

S3の画像ですか?

大部分が小さなサムネイルでも(この画像を大きく表示しない限り)、このアプリケーションの大きな部分は画像です。

現時点では、帯域幅に問題はありません。私のVPSホストは私に200GB以上の容量を提供します(私が望む)。問題は読み込み速度です。すべての画像をS3にアップロードしてそこからロードしたり、大きなファイルの場合にのみこれを行う価値はありますか? 多くの100x150px画像を読み込みますが、一般に50kB未満です。

答えて

2

あなたはSlickGridを見ましたか?ユーザーがスクロールダウンしてリストを作成するだけで、ユーザーがその範囲からスクロールしてリストを削除するという興味深い考えがあります。

関連する問題