別のドメインで静的リソースをホストすることの利点は何ですか?


24

多くのサイトがメインサイトとは別のドメインでリソースをホストしていることに気付きます。たとえば、sstatic.netを使用するStackExchange、imagesbn.comを使用するBarnes&Nobleなどです。

静的リソースを別のホストに配置すると、おそらくnginxのような効率的な静的ファイルWebサーバーを使用して、メインサーバーを解放して動的コンテンツの提供に専念できる利点があることを理解しています。同様に、クラウドフロントAkamaiのような共有CDNへのアウトソーシングは論理的です。

ただし、別のドメインを使用する利点は何ですか?static.stackexchange.comではなくsstatic.netを使用する理由

更新:いくつかの答えが中心的な質問を見逃しています。複数のホスト間で分割することには利点があることを理解しています-並列ダウンロード、よりスリムなWebサーバーなど。しかし、より分かりにくいのは、複数ドメインである理由です。共有リソースのホストとしてstatic.stackexchange.comではなくsstatic.netを使用する理由 これまでのところ、これに対処した回答は1つだけです。

回答:


22

多くのサイトには非常に多くのCookieが設定されており、これらのCookieには何らかの状態をサポートする目的があります。

静的(ステートレス)リソースを完全に異なるドメインに配置することにより、http要求のサイズを削減できます。場合によっては、非常に多くのCookieがあるため、1つのhttp要求で2つのTCPパケットが送信されます。そのため、個別のドメインを持つことは、ページのさまざまな部分を要求するパケットの数を減らす方法の1つです。

同じ目標を持つ他のメソッドは、多くの画像を単一のスプライトにマージし、すべてのJavascriptを単一のファイルにマージします。


23

CDNの使用とは別に、静的データに個別のドメインを使用することは次のことも意味します。

  1. 動的コンテンツWebサーバーが単一の要求ごとにロードする必要があるすべてのモジュール/拡張機能をロードする必要のない軽量Webサーバーを使用できます。.htaccessファイルを読み込むためにURIパスの各ディレクトリをスキャンする必要がないため、サーバーが処理できる同時リクエストの数も増えます。

  2. 余分なサブドメインを追加すると、ブラウザーが実行できる並行ダウンロードの数が増えます。

  3. 適切に設定されている場合(たとえば、サイトがのwww.example.com代わりにホストされている場合example.com)、Cookieのないサブドメインを利用して、トラフィックとラウンドトリップ時間を削減することもできます。

唯一の欠点は、SSLセッションを使用している場合、追加のドメイン用に署名付き証明書と個別の静的IPが必要になることです。しかし、ほとんどの場合、この小さな不便さを上回る利点があります。

編集:

申し訳ありませんが、質問を読み間違えました。一部の人々が個別のSLDを使用する理由を尋ねている場合、#3の括弧で答えられます。sstatic.netでも説明されています

ドメインがwww.example.orgの場合、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ます。


なぜ別のIPが必要なのですか?
ミハリスバゴス

2
暗号化は、従来、ドメイン名が送信される前に適用されるためです。これを軽減するSNIはまだ一般的にサポートされていません-XP上のIEを除外することになります。
フィハグ

@Mihalis:phihagのコメントに追加するために、Windows Mobile 6.5以前、Android 2.x以前、Blackberry Browser、XP上のSafariも除外することになります。 :en.wikipedia.org/wiki/Server_Name_Indication#No_support
Lèsemajesté

3
複数のサブドメインを使用する理由については私は質問していません-それは私にとって理にかなっています。別の完全なドメインについて尋ねています。static.stackexchange.comではなくsstatic.netを使用する理由
マイケルエクストランド

5

Lèsemajestéが主要なポイントをカバーしましたが、さらに拡張するために、すべてのさまざまなStack Exchangeサイトに単一のドメインがあることは、それらを閲覧する人がJavaScriptなどの静的コンテンツを1回だけダウンロードすることを追加します。たとえば、スーパーユーザーにアクセスすると、ユーザーはキャッシュされたコンテンツが同じ場所からであるため、キャッシュされたコンテンツを使用します。

これについては、YahooGoogleでさらに役立つ情報があります


5

主な理由はクッキーです。ニールズが彼の答えで示唆したことは、ほんの小さな結果であり、本当の理由ではありません。Cookieがないと、リクエストサイズが小さくなるため、帯域幅が節約されます。

ただし、実際の違いはブラウザのキャッシュにあります。コンテンツは静的である(つまり変更されない)ため、ブラウザーはローカルのハードディスクにキャッシュすることができ、毎回インターネットからファイルをロードすることを回避できます。Webサーバーはファイル全体ではなく、304応答を送信するだけで、コンテンツは変更されていません。

サイトがCookieを使用する場合、ブラウザはファイルのコンテンツがユーザーごとに異なる可能性があると見なし、それらのファイルをキャッシュしません。Cookieのないドメインからファイルを提供することにより、ブラウザのキャッシュが適切に機能することが保証されます。

これがロード時間を改善し、帯域幅を大幅に削減する主な理由です。


3

古いブラウザは、ホスト名ごとに2つの並行ダウンロードに制限されています。

Webページの要素を複数のドメインに分割することは、ドメイン分割と呼ばれます。これにより、より多くのリソースを並行してダウンロードできるようになり、ページ全体のロード時間が短縮されます。

分割するドメインの最適な数は2〜4です。4つのドメインの後、応答時間が低下します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.