web-dev-qa-db-ja.com

なぜ静的ファイル(CSS、画像、JavaScript、ECC)をサブドメインに挿入するのですか?

なぜ多くの大小のサイトがmedia.example.coms2.static.example.comなどのサブドメインに静的ファイル(CSS、画像、JavaScript、ECC)を挿入するのですか?

利点は何ですか?なぜexample.com/media/のようなディレクトリだけではないのですか?

29
xRobot

少なくとも3つの考えられる(良い)理由があります。

  • 別のマシンを使用して静的コンテンツを提供します
    • CDNを含める
  • 別のWebサーバーを使用して静的コンテンツを提供します
    • より軽量で高速なもの
    • 静的コンテンツを提供するための完全なPHP/.NET/Javaサーバーは必要ありません!
  • 別のドメイン名を使用すると、メインドメインで使用されるCookieを使用できなくなります。

正しく覚えていれば、それがStackOverflowで行われます

24
Pascal MARTIN

私が考える主な理由は、クッキーのためです。

Cookieは、すべてのリクエストとともに送信されます。たとえば、2kbのCookieデータがあり、ページに20個の画像をロードするとします。

これは余分な40kbのデータであり、1か月のページビュー数にそれを掛けると、帯域幅の量に驚くかもしれません役に立たない何かで失われ、帯域幅は無料ではありません...

また、トップレベルドメインに設定されたCookieは、任意のサブドメインに対して行われたすべてのリクエストに送信されます。これらの場合、新しいドメインを購入して、そこで静的コンポーネントをホストすることをお勧めしますcookie-freeドメイン

たとえば、StackOverflowはsstatic.netを使用し、Yahooはyimg.comを使用し、YouTubeはytimg.comを使用し、Amazonはimages-Amazon.comを使用します。

これを見てください:

15
CMS

上記の回答の一部に追加するには:一部のWebブラウザーは、任意のドメインから同時に2つのファイルしかダウンロードできません。

別のホスト名(または名前-a.domainb.domainc.domainなど)から静的コンテンツを提供することで、これらの古いブラウザーはより多くのファイルを並行してダウンロードできます。

8
realworldcoder

...コンポーネントにCookieのないドメインを使用します。

ブラウザが静的画像をリクエストし、リクエストと一緒にCookieを送信すると、サーバーはそれらのCookieを使用しません。したがって、正当な理由もなくネットワークトラフィックを作成するだけです。 Cookieフリーのリクエストで静的コンポーネントがリクエストされていることを確認してください。サブドメインを作成し、すべての静的コンポーネントをホストします。

このアドバイスは、Yahooの Webサイトを高速化するためのベストプラクティス から引用したものです。

2
M4N

HTTPリクエストが小さくなり、サーバーが高速に実行され、リクエストされたファイルが非常に短い時間で渡されるため、最終的にページの読み込みが最速になります。

0
Saurabh Sharma