なぜ多くの大小のサイトがmedia.example.com
やs2.static.example.com
などのサブドメインに静的ファイル(CSS、画像、JavaScript、ECC)を挿入するのですか?
利点は何ですか?なぜexample.com/media/
のようなディレクトリだけではないのですか?
少なくとも3つの考えられる(良い)理由があります。
正しく覚えていれば、それがStackOverflowで行われます
私が考える主な理由は、クッキーのためです。
Cookieは、すべてのリクエストとともに送信されます。たとえば、2kbのCookieデータがあり、ページに20個の画像をロードするとします。
これは余分な40kbのデータであり、1か月のページビュー数にそれを掛けると、帯域幅の量に驚くかもしれません役に立たない何かで失われ、帯域幅は無料ではありません...
また、トップレベルドメインに設定されたCookieは、任意のサブドメインに対して行われたすべてのリクエストに送信されます。これらの場合、新しいドメインを購入して、そこで静的コンポーネントをホストすることをお勧めしますcookie-freeドメイン。
たとえば、StackOverflowはsstatic.net
を使用し、Yahooはyimg.com
を使用し、YouTubeはytimg.com
を使用し、Amazonはimages-Amazon.com
を使用します。
これを見てください:
上記の回答の一部に追加するには:一部のWebブラウザーは、任意のドメインから同時に2つのファイルしかダウンロードできません。
別のホスト名(または名前-a.domain
、b.domain
、c.domain
など)から静的コンテンツを提供することで、これらの古いブラウザーはより多くのファイルを並行してダウンロードできます。
...コンポーネントにCookieのないドメインを使用します。
ブラウザが静的画像をリクエストし、リクエストと一緒にCookieを送信すると、サーバーはそれらのCookieを使用しません。したがって、正当な理由もなくネットワークトラフィックを作成するだけです。 Cookieフリーのリクエストで静的コンポーネントがリクエストされていることを確認してください。サブドメインを作成し、すべての静的コンポーネントをホストします。
このアドバイスは、Yahooの Webサイトを高速化するためのベストプラクティス から引用したものです。
HTTPリクエストが小さくなり、サーバーが高速に実行され、リクエストされたファイルが非常に短い時間で渡されるため、最終的にページの読み込みが最速になります。