S3 からの並列ダウンロードを最大化する方法

S3 からの並列ダウンロードを最大化する方法

1 ページに Amazon S3 から読み込む画像が多数あり、すべての画像を読み込むのにかなり時間がかかることがあります。異なるサブドメインから読み込む画像を分割すると、並列ダウンロードに役立つと聞きましたが、実際の実装はどうなっているのでしょうか。static、image などのサブドメインに分割するのは簡単ですが、たとえば 100 枚の画像を読み込むには、10 個のサブドメイン (image1、image2...) を作成する必要がありますか。それとも、何か賢い方法がありますか。

(ところで、S3images をキャッシュするために memcache を使用することを検討していますが、それが可能かどうかはわかりません。さらにコメントをいただければ幸いです。どうもありがとうございます!

答え1

あなたの状況に確実に役立つと思われるポイントごとに回答をまとめてみようと思います。

  • 静的コンテンツについて話しているので、静的コンテンツをサーバーするためのリバース プロキシとして Nginx を使用することをお勧めします。ダウンロードが遅いのは、Apache の同時接続制限に達している可能性があります。
  • 異なるサブドメインや複数のサブドメインを使用すると、ブラウザ自体の範囲には役立つかもしれませんが、一方で、サブドメインによって DNS 解決リクエストが増えるため、ページ全体の速度とランクに影響する可能性があります。これは良いことではありません。
  • Cloudflare.com などを見てください。そこには、利用できる非常に優れた無料サービスがいくつかあります。
  • ブラウザ キャッシュ ヘッダーを活用すると、コンテンツがそれほど動的に変化しない場合に非常に役立ちます。
  • 静的スクリプト (例: CSS、JS) は常に最小化された状態に保つようにしてください。
  • 次のようなサービスを使用してみてください:http://tools.pingdom.com/fpt/そしてグットメトリックスより良い結果を得るための貴重なヒントに加えて、ページの読み込みパフォーマンスに関する非常に価値のある詳細情報も提供できるからです。
  • ページが生成するリクエストを最小限に抑えるようにしてください(異なるスタイルやレイアウトの画像を少ない画像に組み合わせ、CSS で制御するなど)

うーん...これが私が現時点で考えていたものです。

答え2

最も大きなスピードアップは、Amazon の CDN である CloudFront に移行することです。CloudFront は S3 の前に配置できるため、ユーザーにとって処理速度が大幅に向上します。

これを実行したら、必要に応じて、すべて同じ S3 バケットを指す複数の CloudFront サブドメインを作成し、それらをランダムに画像に割り当てて、並列に読み込むことができます (基本的には image1、image2 のアイデアです)。

答え3

画像を複数の CNAME に分割するというアイデアは良いもので、Google のベスト プラクティスで最もよく説明されています。https://developers.google.com/speed/docs/best-practices/rtt#ParallelizeDownloads

関連情報