多くのサイトがメインサイトとは別のドメインでリソースをホストしていることに気付きました。 sstatic.netを使用したStackExchange、imagesbn.comを使用したBarnes&Nobleなど.
静的リソースを別のホストに配置すると、おそらくnginxなどの効率的な静的ファイルWebサーバーを使用して、メインサーバーを解放して動的コンテンツの提供に専念するメリットがあることを理解しています。同様に、クラウドフロントAkamaiのような共有CDNへのアウトソーシングは論理的です。
ただし、別のドメインを使用する利点は何ですか? static.stackexchange.comではなくsstatic.netを使用する理由
更新:いくつかの答えはコアの質問を見逃しています。複数のホスト(並列ダウンロード、よりスリムなWebサーバーなど)に分割することにはメリットがあることを理解しています。しかし、複数のdomainsの理由はわかりにくいです。共有リソースのホストとしてstatic.stackexchange.comではなくsstatic.netを使用する理由これまでのところ、これに対処した答えは1つだけです。
多くのサイトには非常に多くのCookieが設定されており、これらのCookieには何らかの状態をサポートする目的があります。
静的(ステートレス)リソースを完全に異なるドメインに配置することにより、http要求のサイズを削減できます。場合によっては、非常に多くのCookieがあるため、1つのhttp要求で2つのTCPパケットが送信されます。そのため、個別のドメインを持つことは、ページのさまざまな部分を要求するパケットの数を減らす方法の1つです。
同じ目標を持つ他のメソッドは、多くの画像を単一のSpriteにマージし、すべてのJavascriptを単一のファイルにマージします。
CDNの使用とは別に、静的データに個別のドメインを使用することは次のことも意味します。
動的コンテンツWebサーバーが単一の要求ごとにロードする必要があるすべてのモジュール/拡張機能をロードする必要のない軽量Webサーバーを使用できます。 .htaccessファイルを読み込むためにURIパスの各ディレクトリをスキャンする必要がないため、サーバーが処理できる同時リクエストの数も増えます。
サブドメインを追加すると、ブラウザーが実行できる並行ダウンロードの数が増えます。
適切に設定されている場合(たとえば、サイトがwww.example.com
ではなくexample.com
でホストされている場合)、Cookieのないサブドメインを利用して、トラフィックと往復時間を削減することもできます。
唯一の欠点は、SSLセッションを使用している場合、追加のドメイン用に署名済み証明書と個別の静的IPが必要になることです。しかし、ほとんどの場合、この小さな不便さを上回る利点があります。
編集:
申し訳ありませんが、質問を読み間違えました。一部の人々が個別のSLDを使用する理由を尋ねている場合、#3の括弧で答えられます。 sstatic.net でも説明されています:
ドメインがwww.example.orgの場合、staticコンポーネントをstatic.example.orgでホストできます。 ただし、www.example.orgではなくトップレベルドメインexample.orgに既にCookieを設定している場合、static.example.orgへのすべてのリクエストにはそれらのCookieが含まれます。この場合、まったく新しいドメインを購入し、そこで静的コンポーネントをホストし、このドメインをCookieなしで保持できます。Yahoo! yimg.comを使用し、YouTubeはytimg.comを使用し、Amazonはimages-Amazon.comを使用します。
しかし、incarnateは、特定の資産を共有するサイトの大規模なネットワークを実行している場合、既存のSLDのサブドメインの代わりに個別の汎用SLDを使用することの良い点にも言及しています。
最後に、Niels Basjesが指摘しているように、Cookieを削除する理由の一部は、リクエストの実行に使用されるパケットの数を最小限にすることです。 YSlowのガイドラインでは、ほとんどのネットワークの最大パケットサイズは1500バイトであるため、1500バイト未満に抑えるとTCPオーバーヘッドが削減されると考えています。これは、sstatic.net
の代わりにstatic.webmasters.stackexchange.com
を使用する別の利点も示しています。
主な理由はクッキーです。ニールズが彼の答えで示唆したことは、ほんの小さな結果であり、本当の理由ではありません。 Cookieがないと、リクエストサイズが小さくなるため、帯域幅が節約されます。
ただし、実際の違いはブラウザのキャッシュにあります。コンテンツは静的である(つまり、変更されない)ため、ブラウザはローカルのハードディスクにコンテンツをキャッシュし、毎回インターネットからファイルをロードすることを回避できます。 Webサーバーは、ファイル全体ではなく、304応答を送信するだけで、コンテンツは変更されていません。
サイトがCookieを使用する場合、ブラウザはファイルのコンテンツがユーザーごとに異なる可能性があると見なし、それらのファイルをキャッシュしません。 Cookieのないドメインからファイルを提供することにより、ブラウザーのキャッシュが適切に機能することが保証されます。
これがロード時間を改善し、帯域幅を大幅に削減する主な理由です。
古いブラウザは、ホスト名ごとに2つの並行ダウンロードに制限されています。
Webページの要素を複数のドメインに分割することを domain sharding と呼びます。これにより、より多くのリソースを並行してダウンロードできるため、ページ全体のロード時間が短縮されます。