私はほぼ独占的にAJAXに基づいている画像/プロファイル検索アプリケーションの種類を開発しています。メインページは、基本的にプロフィール画像を表示し、ユーザーがそれらをフィルタリング/検索してページ付けすることを可能にします。パフォーマンスチューニングAJAXヘビーアプリケーション
ページネーションはユーザーがスクロールしたときに機能するため、インターフェイスは非常に高速である必要があります。メインページに表示されるのはわずか6(多分9、しかし間違いない)の画像だけなので、ユーザーはたくさんスクロールします。私は現在、非常にシンプルなJSキャッシュを使用して、ユーザーが戻ってくることを決定した場合に備えて、すべてのリクエストの結果を保存しています。その場合、サーバーに問い合わせるのではなく、キャッシュからすべてを取り出します。私が考え
クライアントキャッシュ
1つのオプションは、事前にロードすることです前の10ページと言うと、キャッシュに格納します。
しかし私の最大の問題はフィルタリング/検索です。これはサーバーに送られるクエリのタイプを完全に変更するためです。私のフィルタはあまり複雑ではなく、たったの6-7文字列/数/列挙型属性です。
キャッシュですべてのフィルタ処理を実行したい場合は、すべての検索ロジックを複製し、すべてのデータをサーバーから取得する必要があります(表示するデータだけでなく)。クライアント側の結果
ここに質問がありますが、キャッシュを何らかの形で永続化する必要がありますか?多分それをクッキーに入れておいて?
サーバーキャッシュ?
提案は、にあるかもしれません。サーバー上でmemcachedを使用し、そこにすべてを保存してください。私は可能な限りすべての結果をキャッシュに残していますが、サーバーが負荷と負荷のかかるAJAX要求を処理することはありません。
私はこのアプリケーションをRails 3で開発しています。私はそれを愛していますが、世界で最も速いとは言いません。 これは、AJAXリクエストのみを処理するために別のRack/Sinatraアプリケーションを作成することです。これは、すべてのAJAXではなく、メインクエリからのリクエストを意味します。
S3の画像ですか?
大部分が小さなサムネイルでも(この画像を大きく表示しない限り)、このアプリケーションの大きな部分は画像です。
現時点では、帯域幅に問題はありません。私のVPSホストは私に200GB以上の容量を提供します(私が望む)。問題は読み込み速度です。すべての画像をS3にアップロードしてそこからロードしたり、大きなファイルの場合にのみこれを行う価値はありますか? 多くの100x150px画像を読み込みますが、一般に50kB未満です。