28

昨年かそこらで、多くの主要な Web サイトがページの構造に同じ変更を加えたことに気付きました。それぞれの Javascript ファイルは、ページ自体 (またはそのサブドメイン) と同じドメインでホストされていたものから、別の名前のドメインでホストされているものに移動しました。

単なる並列化ではない

現在、ページのコンポーネントを複数のドメインに分散させてダウンロードを並列化する、よく知られた手法があります。 Yahooは、他の多くの人と同様にそれを推奨しています. たとえば、www.example.comは HTML がホストされている場所であり、画像はimages.example.comに配置し、javascript はscripts.example.com に配置します。これは、ほとんどのブラウザーがサーバーごとの同時接続数を制限して、良きネット市民であるという事実を回避します。

上記は私が話していることではありません。

コンテンツ配信ネットワークへの単なるリダイレクトではありません (または、そうかもしれません。質問の下部を参照してください)。

私が話しているのは、Javascript をまったく別のドメインでホストすることです。具体的に言ってみましょう。昨年かそこらで、私は次のことに気付きました:

youtube.comは .JS ファイルをytimg.comに移動しました

cnn.comは .JS ファイルをcdn.turner.comに移動しました

weather.comは .JS ファイルをj.imwx.comに移動しました

今では、大規模な Web サイト向けのアウトソーシングを専門とするAkamaiのようなコンテンツ配信ネットワークについて知っています。(Turner の特別なドメインの「cdn」という名前は、この概念の重要性を示しています)。

ただし、これらの例では、各サイトにはこの目的のために特別に登録された独自のドメインがあり、コンテンツ配信ネットワークやその他のインフラストラクチャ プロバイダーのドメインではないことに注意してください。実際、これらのスクリプト ドメインのほとんどからホームページを読み込もうとすると、通常は会社のメイン ドメインにリダイレクトされます。また、関連する IP を逆引きすると、CDN 企業のサーバーを指しているように見える場合とそうでない場合があります

なぜ私は気にするのですか?

以前は 2 つの異なるセキュリティ会社で働いていたので、悪意のある Javascript に悩まされてきました。

その結果、私は Javascript (および Java などの他のアクティブ コンテンツ) の実行を許可するサイトをホワイトリストに登録する慣行に従います。その結果、 cnn.comのようなサイトを適切に機能させるには、手動でcnn.comをリストに追加する必要があります。それは後ろの痛みですが、私は代替案よりもそれを好みます。

scripts.cnn.comなどを使用して並列化した場合、適切なワイルドカードを使用するとうまくいきました。また、人々が CDN 会社のドメイン以外のサブドメインを使用している場合、CDN 会社のメイン ドメインを先頭にワイルドカードを付けて許可するだけで、一石二鳥です (*.edgesuite.net や *.akamai.com など)。

現在、(2008 年現在) これでは不十分であることがわかりました。ここで、ホワイトリストに登録したいページのソース コードを調べて、そのサイトが Javascript を保存するために使用している「秘密の」ドメイン (複数可) を特定する必要があります。場合によっては、サイトを機能させるために 3 つの異なるドメインを許可する必要があることに気付きました。

これらすべての主要なサイトがこれを始めたのはなぜですか?

編集: 「onebyone」が指摘したように、コンテンツの CDN 配信に関連しているようです。それで、彼の研究に基づいて質問を少し修正させてください...

weather.comがtwc.vo.llnwd.netではなくj.imwx.comを使用しているのはなぜですか?

youtube.comがstatic.cache.l.google.comではなくs.ytimg.comを使用しているのはなぜですか?

これには理由があります。

4

10 に答える 10

41

フォローアップの質問は基本的に次のとおりです。人気のあるWebサイトがCDNを使用しているとすると、サブドメイン(static.weather.com)やCDNのドメインの代わりにimwx.comのような独自のTLDを使用するのはなぜですか。

CDNのドメインに対して彼らが管理するドメインを使用する理由は、彼らが管理を維持するためです-何千ものページ/アプリケーションのリンクを更新する必要があるのに対して、CDNを完全に変更する可能性があり、DNSレコードを変更するだけで済みます。

では、なぜナンセンスなドメイン名を使用するのでしょうか。.jsや.cssなどのヘルパーファイルの重要な点は、プロキシやユーザーのブラウザーによって可能な限りダウンストリームにキャッシュされるようにすることです。人がgmail.comにアクセスし、すべての.jsがブラウザのキャッシュから読み込まれると、サイトは非常にスッキリしているように見え、サーバー側の帯域幅も節約されます(誰もが勝ちます)。問題は、非常に積極的なキャッシュのためにHTTPヘッダーを送信すると(つまり、1週間、1年、または永久にキャッシュする)、これらのファイルがサーバーから確実に読み込まれなくなり、変更や修正を行うことができなくなることです。人々のブラウザで物事が壊れるからです。

したがって、企業がしなければならないことは、これらの変更をステージングし、実際にこれらすべてのファイルのURLを変更して、ユーザーのブラウザーにそれらを再ロードさせることです。「a.imwx.com」、「b.imwx.com」などのドメインを循環することは、これが行われる方法です。

ナンセンスなドメイン名を使用することで、Javascript開発者とそのJavascript sysadmin / CDNリエゾンの対応者は、これらの変更をプッシュする独自のドメイン名/ DNSを持ち、責任を負い、自律的になります。

次に、TLDで何らかの種類のCookieブロックまたはスクリプトブロックが発生し始めた場合、それらは1つのナンセンスTLDからkyxmlek.comなどに変更されます。*.google.comのすべてに対抗策の副作用がある悪事を誤って行うことを心配する必要はありません。

于 2008-10-02T01:53:33.447 に答える
7

Cookie トラフィックを制限しますか?

Cookie が特定のドメインに設定されると、そのドメインへのすべてのリクエストで Cookie がサーバーに送り返されます。リクエストごと!

それはすぐに合計できます。

于 2008-10-02T00:37:13.833 に答える
4

多くの理由:

CDN - 別の dns 名を使用すると、静的アセットをコンテンツ配信ネットワークに移行しやすくなります

並列処理 - 画像、スタイルシート、および静的 JavaScript は、ajax コールバックや動的画像など、他の要求をブロックしない 2 つの他の接続を使用しています。

Cookie トラフィック - まったく正しい - 特に、単純なセッション ID よりもはるかに多くの情報を Cookie に保存する習慣があるサイトでは

ロード シェーピング - CDN がなくても、膨大な数のファイル URL リクエストに非常に迅速に応答するように最適化された少数の Web サーバーで静的アセットをホストする十分な理由がありますが、サイトの残りの部分は応答する多数のサーバーでホストされます。よりプロセッサを集中的に使用する動的リクエストに


更新 - CDN の dns 名を使用しない 2 つの理由。クライアントの dns 名は、CDN がキャッシュしているアセットの適切な「ハイブ」へのキーとして機能します。また、CDN はコモディティ サービスであるため、DNS レコードを変更することでプロバイダーを変更できます。そのため、サイトでのページの変更、再構成、または再展開を回避できます。

于 2008-10-02T01:41:05.117 に答える
2

CDN理論には何かがあると思います。

例えば:

$ host j.imwx.com
j.imwx.com              CNAME   twc.vo.llnwd.net
twc.vo.llnwd.net        A       87.248.211.218
twc.vo.llnwd.net        A       87.248.211.219
$ whois llnwd.net
<snip ...>
Registrant:
  Limelight Networks Inc.
  2220 W. 14th Street
  Tempe, Arizona 85281-6945
  United States

LimelightはCDNです。

その間:

$ host s.ytimg.com
s.ytimg.com             CNAME   static.cache.l.google.com
static.cache.l.google.com       A       74.125.100.97

これは、Googleが内部で実行する静的コンテンツのCDNだと思います。

$ host cdn.turner.com
cdn.turner.com A record currently not present

ああ、すべてに勝つことはできません。

ちなみに、FirefoxをNoScriptアドオンと一緒に使用すると、ソースを探すプロセスが自動化され、ホワイトリストのプロセスがGUI化されます。基本的に、ステータスバーのNoScriptアイコンをクリックすると、「このページのすべて」を含む、一時的または永続的にホワイトリストに登録するオプションを含むドメインのリストが表示されます。

于 2008-10-02T01:07:21.703 に答える
1

このソリューションを約 2 ~ 3 年前に以前の雇用主で実装したのは、レガシー Web サーバーの実装が原因で Web サイトが過負荷になり始めたときです。CSSとレイアウト画像をApacheサーバーに移すことで、メインサーバーの負荷を減らし、速度を際限なく上げました。

しかし、Javascript 関数はページ自体と同じドメイン内からしかアクセスできないという印象を常に持っていました。新しい Web サイトにはこの制限がないようです。おっしゃるように、多くの Web サイトでは Javascript ファイルが別々のサブドメインまたは完全に切り離されたドメインにあります。

数年前ではなかったのに、なぜこれが可能になったのか、誰か私に指摘してもらえますか?

于 2009-08-11T15:56:07.040 に答える
0

私はこれを行う会社と協力してきました。彼らはかなり良いピアリングを備えたデータセンターにいるので、CDNの推論は彼らにとってそれほど大きくはありません(多分それは役立つでしょうが、彼らはその理由でそれをしません)。その理由は、動的ページ(PHPスクリプト)をまとめて処理する複数のWebサーバーを並行して実行し、lighttpdやthttpdなどの高速で軽量なWebサーバーを使用して提供する別のドメインから画像とJavaScriptを提供するためです。画像と静的javascript。

PHPにはPHPが必要です。静的Javascriptと画像はそうではありません。あなたがする必要があるのが絶対的な最小であるとき、多くはフル機能のウェブサーバーから取り除くことができます。

もちろん、特定のサブディレクトリへのリクエストを別のサーバーにリダイレクトするプロキシを使用することもできますが、すべての静的コンテンツを別のサーバーで処理する方が簡単です。

于 2008-10-02T02:04:38.977 に答える
0

スパムやコンテンツフィルターによるブロックが原因でしょうか?彼らが奇妙なドメインを使用している場合、それを理解するのは難しく、そして/またはあなたはあなたが望むものをブロックすることになります。

ダンノ、ただの考え。

于 2008-10-02T01:19:31.893 に答える
0

あなたはあなた自身の質問に答えたと思います。

あなたの問題は、WHY ではなく、セキュリティに関連していると思います。

おそらく、問題のページの有効な CDN を記述する新しい META タグが必要な場合は、それらを読み取り、それに応じて動作するブラウザ アドオンだけが必要です。

于 2008-10-02T00:55:11.217 に答える
0

私が有名なマルチブランド企業である場合、JavaScript コードをライブラリとして利用できるようにしたいので、このアプローチは理にかなっていると思います。住所、州名、郵便番号などを処理する際に、できるだけ多くのページで一貫性を持たせたいと考えています。AJAX はおそらくこの懸念を際立たせます。

現在のインターネット ビジネス モデルでは、ドメインはブランドであり、ネットワーク名ではありません。ブランドを買収またはスピンオフすると、多くのドメイン変更が発生します。これは、最も有名なサイトでさえ問題です。

*.netscape.com と *.mcom.com の有用なドキュメントへのリンクがまだありますが、これらは長い間失われています。

ネットスケープのウィキペディアは次のように述べています。

「2004 年 10 月 12 日、人気のある開発者向け Web サイトである Netscape DevEdge が AOL によって閉鎖されました。DevEdge は、インターネット関連技術の重要なリソースであり、Netscape ブラウザーに関する決定的なドキュメント、HTML や JavaScript などの関連技術に関するドキュメント、および人気のある記事を維持しています。 Danny Goodman などの業界および技術のリーダーによって書かれています。DevEdge の一部のコンテンツは Mozilla Web サイトで再公開されています。」

つまり、10 年以内に次のようになります。

  • モザイク通信株式会社
  • ネットスケープ コミュニケーションズ株式会社
  • AOL
  • AOL タイム ワーナー
  • タイムワーナー

ブランド名ではないドメインにコードを配置すると、多くの柔軟性が維持され、Web サイトの名前が変更されたときにすべてのエントリ ポイント、アクセス制御、およびコード参照をリファクタリングする必要がなくなります。

于 2008-10-02T01:27:23.307 に答える
0

異なるドメインに移動できるのは JavaScript だけではありませんが、できるだけ多くのアセットを使用するとパフォーマンスが向上します。

ほとんどのブラウザでは、1 つのドメインに対して同時に接続できる数に制限があります (4 程度だと思います)。そのため、大量の画像、js、css などがある場合、各ファイルのダウンロードが滞ることがよくあります。

YSlow や FireBug などを使用して、各ファイルがサーバーからダウンロードされるタイミングを確認できます。

資産を別々のドメインに置くことで、プライマリの負荷を軽減し、より多くの同時接続を確立して、いつでもより多くのファイルをダウンロードできます。

私たちは最近、この原則を画像に使用する(家の、当然のことです:P)多くの画像を持つ不動産Webサイトを立ち上げたので、データを一覧表示する方がはるかに高速です。

また、資産量の多い他の多くの Web サイトでもこれを使用しています。

于 2008-10-02T00:38:30.680 に答える