web-dev-qa-db-ja.com

CDNがサブドメインではなく異なるドメイン名を使用するのはなぜですか?

多くのオンラインサービスは、地理的に近い場所からコンテンツを提供できるようにすることでパフォーマンスを向上させるようにCDN(コンテンツ配信ネットワーク)を構成しています。 CDNが実際のサービスとは異なるドメイン名から提供されることが非常に多いことに気づきました。

たとえば、www.Amazon.comにアクセスすると、media-Amazon.comからコンテンツが取得されます。

www.facebook.comはfbcdn.comなどからコンテンツを取得します。

私の質問は、これらのサービスがCDNに完全に異なるドメイン名の代わりにサブドメインを使用しないのはなぜですか?

例えば。 fbcdn.comの代わりにcdn.facebook.comを使用しないのはなぜですか?そんなことはめったにありません。ほとんどの場合、これは別のドメイン名であり、多くの場合、何かが追加されたベースドメイン、または略語です。

私が考えることができる唯一のことは、異なるドメイン名を持つことで、異なるDNSプロバイダーを使用してDNS負荷を分散できるということですが、常にそうであるとは限りません。

この慣行には特定の技術的理由がありますか?もしそうならそれは何ですか?

明確化:ドメイン名登録の費用は気にしません。 CDNを多用している会社なら、いくつかの追加のドメイン名を購入できると思います。私の質問は、技術的な観点から、サブドメインを使用する方が個別のドメインを使用するよりも劣る理由です。慣行が非常に広まっているという事実は、それには正当な理由があることを示唆しています。

2
barbecue

すべてのプロバイダーは異なり、同じ選択をするための異なる理由があるかもしれませんが、これが行われる一般的な理由の1つはCookiesが原因です。

WebサイトでCookieを使用していて、複数のサブドメインでCookieを使用する必要がある場合は、すべてのCDN要求と共にCookieを送信することになります。これにより、2つの問題が発生します。

  1. 多数のCookieや非常に大きなCookieがある場合、CDNへのすべてのリクエストが大幅に拡大され、理由もなく貴重な帯域幅を使い果たします(CDNはすべてのユーザーに同じコンテンツを提供するため)。 Google、Facebook、Amazonなどの規模では、数百万(場合によっては数十億)のリクエストがすばやく追加されるため、リクエストのすべてのバイトがカウントされます。
  2. Cookieにユーザーデータが含まれている場合、CDNがそのデータを表示できないようにする必要がある場合があります。これは、CDNが実際に完全にまたは部分的にサードパーティのサービスプロバイダーによってホストされている場合に特に当てはまります。 CookieをCDNに送信しないことで、ユーザーのデータに対する攻撃の可能性が1つなくなります。

もう1つの一般的な理由はユーザー生成コンテンツです。この良い例は、GitHubリポジトリでホストされているGmailの添付ファイルとコードです。ユーザーが作成したコンテンツがサブドメインでホストされている場合、Cookie、LocalStorageなどからユーザーの情報を保持し、サードパーティに送信できる可能性があります。別のドメインでホスティングすると、その形式の攻撃が軽減されます。

2
Moshe Katz