Microsoft CDN for jQueryまたはGoogle CDN?[閉まっている]


187

実際には、jqueryファイルまたはjavascriptファイルへのリンクに使用するCDNが問題になりますか?1つは他よりも潜在的に高速ですか?他にどのような要因が、あなたがどのCDNを使用することに決めたのでしょうか?マイクロソフト、ヤフー、グーグルのすべてが現在CDNを持っていることを知っています。

回答:


151

コメントに基づいて更新:

ショートバージョン:それほど重要ではありませんが、ホストするものに依存する場合があります。彼らはすべてのホストの異なるもの:Googleは2016年以来、彼らがやる!!、マイクロソフトが提供しています、いないホストjQuery.Validateは、MicrosoftがホストのjQuery-UIなかったんそうでない場合を経由して提供されるだろう、そのスクリプトScriptResource.axdと簡単に統合(例えばASPとのScriptManager。 Net 4.0)。

重要な注意: イントラネットアプリケーションを構築している場合は、CDNアプローチから離れてください。誰がホストしているかは関係ありません。非常に過負荷のサーバーを内部で使用している場合を除き、CDNはローカルの100mb / 1GBイーサネットよりも高いパフォーマンスを提供しません。厳密に内部のアプリケーションにCDNを使用すると、パフォーマンスが低下します。 キャッシュの有効期限ヘッダーを正しく設定し、イントラネットのみのシナリオで存在するCDNを無視します。

どちらかがブロックされる可能性はほぼ等しく、ほぼゼロのようです。私はこれが真実でない契約に取り組みましたが、それは例外のようです。また、この回答の最初の投稿以来、それを取り巻く状況は大きく変化し、Microsoft CDNは多くの進歩を遂げました。

私が現在取り組んでいるプロジェクトでは、ソリューションに最適な両方のCDNを使用しています。これにはいくつかの要因が関係します。古いブラウザを使用しているユーザーは、HTTP仕様で推奨されているように、おそらくドメインごとに2つの同時リクエストを実行しています。これは、パイプライン処理サポートするかなり新しいもの(現在のすべてのブラウザー)を実行している人にとっては問題ではありませんが、別の要因に基づいて、少なくともJavaScriptに関しては、この制限も打ち切ります。

私たちが使用しているGoogleのCDN:

私たちが使用しているマイクロソフトのCDN:

私たちのサーバー:

  • Combined.js?v = 2.2.0.6190(Major.Minor.Iteration.Changeset)

ビルドプロセスの一部はすべてのカスタムJavaScriptを組み合わせて縮小するため、ビルドに応じてこれらのスクリプトのリリースまたはデバッグ(非縮小)バージョンを含むカスタムスクリプトマネージャーを介してこれを行います。GoogleはjQuery検証パッケージをホストしていないため、これはマイナス面になる可能性があります。MVCはこれを2.0リリースに組み込んだり使用したりしているため、すべてのニーズについてMicrosoftのCDNに完全に依存することができ、すべてがScriptManagerを介して自動的に行われます

行われる他の唯一の議論はDNS時間です。ページの読み込み速度の点でこれにはコストがかかります。 平均的に:使用量が多い(長い間使用されている)ためにajax.googleapis.comDNSより早く返される可能性が高いのはajax.microsoft.com、ローカルDNSサーバーがリクエストを取得する可能性が高いためです(これは、領域ペナルティの最初のユーザーです)。 。これは非常にマイナーなことであり、ミリ秒までのパフォーマンスが非常に重要な場合にのみ検討する必要があります。
(はい:私はこの点が両方のCDNを使用することに反することを理解していますが、私たちの場合、DNS時間は、発生するJavaScript /ブロッキングの待機時間によってはるかに覆い隠されています)

最後に、あなたはそれを見ていない場合は、そこにあるから最高のツールの1 Firebugは、そのためのいくつかのプラグイン:ページスピードYSlowの。CDNを使用しているが、キャッシュヘッダーがないためにページが毎回画像を要求している場合は、簡単に解決できる方法がありません。FirebugのNetパネルは、ページの読み込み時間の内訳をすばやく提供します。Pag​​eSpeed / YSlowは、役立ついくつかの良い提案を提供します。


26
ブロックされる可能性は低いですか?あなたがそのアイデアを思いついた方法を知りたいです。とにかく、MSネットワークはMSのネットワークではありません。Googleよりもずっと長い間、負荷分散サーバーを実行してきたのはアカマイであり、これは「より優れたフォールオーバーシステム」の意味もありません。本当に、あなたがこのような主張をするつもりなら、いくつかの証拠がいいでしょう。
blowdart 2009年

16
一部の企業、および私はいくつかの会社で働いていますが、Windows更新のブロックの一部として* .microsoft.comを完全にブロックします。これは正しいです?いいえ、それは起こりますか?はい。例:ajax.microsoft.com / ... www例外ではなく* .microsoft.comブロックに該当し、企業がwww.microsoft.com以外のものをブロックすることを選択した場合はブロックされます。私はそれが可能性が高いとは言わなかった、可能性が高いと私は言った。
Nick Craver

5
そして、政府のサイトでGmailを停止するためにgoogleがブロックされるのを見ました。しかし、それが非常にまれであるため、この場合は正当化として使用しようとはしません。
blowdart 2009年

19
これが書かれていたので、MSは、彼らのCDNにはjQuery-UIを追加しました:asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
ウィルディーン

3
@Nick Microsoftは、そのCDNをajax.microsoft.comからajax.aspnetcdn.comに移動しました。したがって、Windows Updateのブロックの一部としてMicrosoftのCDNをブロックする可能性はありません。
Sachin Joseph

88

jQueryには必ずGoogle CDNを使用してください(これはMicrosoft中心の開発者によるものです)。

単純な統計です。jQueryにMS CDNを使用することを検討する人は、常に少数派です。Googleを使用し、Microsoftの使用を考慮しない、jQueryを使用する非MS開発者が多すぎます。以来、公共CDNとの大きな勝利の一つは、改善キャッシングされ、複数のCDN間の分割の使用はその利益の可能性を減少させます。


7
私たちがそのように考え続けると、より大きなものだけが呼吸するようになります。それはグーグルであり、誰もが彼らと一緒にいると仮定するので、単にグーグルを使用しないでください(間違いなくほとんどは彼らと一緒です)。しかし、最高の勝利を手に入れ、結果を比較して、それらを使いましょう。
mamu 2010

20
それは仮定ではありません。Alexaのサイトは、GoogleのCDNを使用して200,000を上回っており、Microsoftの100:1を上回っています。キャッシングの人気に関しては、MS jQuery CDNを支持する唯一の点は、Microsoft.comがそれを使用することです。これにより、1つの参照のみから多くの情報を得ることができます(ただし、Googleを参照する数千のトップサイトほどではありません) )。
デイブウォード

@DaveWard、これがまだ事実であることを確認できますか、または過去数年間でテーブルがいくらか変わっていますか?
snumpy 2013

3
@snumpy:Google CDNは、私が見たものからかなりリードを広げています。Microsoft CDNには何の問題もありません。高速で、Googleのファイルにはないファイルがいくつかあります。ただし、クロスサイトキャッシングの利点は、ネット全体のカバレッジに依存しており、Googleはその点で他のすべてを支配しています。
Dave Ward、

jQuery MobileをホストするためにjQuery CDNからMicroeoftに切り替えたので、DNSラウンドトリップの数を減らすために、他のjQueryダウンロードをGoogleからダウンロードしました。ちょうど別の要因:)
ロブ・グラント

20

Googleから独自のソフトウェアで縮小されたjQueryバージョンが送信されます。このバージョンは、MSが提供する標準の縮小バージョンよりも6 kb軽量です。Googleへ。


18

考慮すべき1つのマイナーなことは、両方の会社がわずかに異なる「追加の」ライブラリを提供していることです。

ニーズによっては、これが適切な場合があります。


23
これが書かれてから、MSはjQuery-UIをCDNに追加しました:asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean

15

ajax.microsoft.comはmicrosoft.comリクエストのサブドメインであるため、ファイルを取り戻すのにかかる全体の時間にすべてのmicrosoft.com Cookieを送信することにも注意してください。

また、ajax.microsoft.comは、他のWebサーバーが使用する標準の圧縮よりも劣るデフォルトのIIS7圧縮を使用しています。

http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js - 33.4K

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26.5K

また、他の人がgoogle CDNを言及したように、ファイルがキャッシュされる可能性を大幅に高めます。

したがって、Googleを使用することを強くお勧めします。


3
これは当時は良い反論でしたが、推奨されるCDNドメイン名がajax.aspnetcdn.comになったため、適用されなくなりました。* .microsoft.comの反対意見のブロックも適用されなくなりました。
スティーブンケネディ

これは本当です。彼らがついにこの部分を修正してくれてうれしい。今、ms cdnからjquery検証/サイクルプラグインを含めることについてそれほど気になりません。
Alistair

aspnetcdnに切り替わったため、Cookieも適用されなくなりました。
Rob Grant

11

それはおそらく問題ではありませんが、A / Bテストでこれを検証できます。トラフィックの半分を1つのCDNに送信し、残りの半分を他のCDNに送信し、応答を測定するためのプロファイリングを設定します。どちらか一方に深刻な可用性の問題がある場合に備えて、簡単に切り替えられるようにすることがより重要だと思います。


7

私はここで少し遅くなっているのを知っていますが、ここで私が生産で使用しているコードがあります。問題は一度もありませんが、走行距離はさまざまです。必ず自分の環境でテストしてください。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>    
<script type="text/javascript">
    !window.jQuery && document.write('<script src="/scripts/jquery-1.4.2.min.js"><\/script>')
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    !window.jQuery.ui && document.write('<script src="/scripts/jquery-ui-1.8.2.min.js"><\/script>')
</script> 

1
残念ながら、一部のブラウザー(IE6)では、src =スクリプトが読み込まれるまでオンラインスクリプトの処理を遅らせないため、期待どおりに動作しません。お願いします!
Walden Leverich

2
そのため、IE6ユーザーのエクスペリエンスは少し遅くなります。あなたが私に尋ねれば良いトレードオフ。IE6は衰退しています...企業イントラネットでもです。
Armstrongest

7

それは統計についてです:jquery.comはGoogleからjQueryをロードします。また、Twitter、Stackoverflow、その他多くのサービスも同様です。したがって、あなたのウェブサイトのユーザーが既にそれをキャッシュしている可能性が非常に高い= ダウンロードはまったくありません

これが主な利点であるため、バリデーター、帯域幅、および速度を忘れてください。それ以外の場合、他のCDNオプションは基本的に同じレベルで実行されます。


1
ええ、でもTwitter(Dave Wardのencosia.com/2010/09/15/…によると)はjQuery 1.3.0(「古い」Twitterで)を使用しているので、あまり重要ではありません...
veggerby

さて、私が少し前に行ったサイトは、(古い)Twitterのように、まだjQuery 1.3.0を使用しています。それは常に重要です。
achairapart

6

1つは他よりも潜在的に高速ですか?

実際に私はこれに興味があったので、次のそれぞれを使用してjsbinテストページをセットアップし、webpagetest.orgの視覚的比較ツールを実行しました。私がテストした:

  1. ajax.googleapis.com
  2. code.jquery.com
  3. ajax.aspnetcdn.com
  4. cdnjs.cloudflare.com

誰が最速でしたか:code.jquery.comは両方のテストで0.1秒

最も遅いのは誰ですか:最初のテストではajax.aspnetcdn.comが0.7秒、2番目のテストではajax.googleapis.comが1 秒遅れました。

これが最初のテストです(それぞれ3回テストされました)。

ビデオ: http : //www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

レポート: http : //www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

これが2番目のテストです(さらに3つずつ):

ビデオ: http : //www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

レポート: http : //www.webpagetest.org/video/compare.php?tests= 121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ, 121019_VY_KJR


4

Pingdomが述べたように

誰かがサイトにアクセスしたときに、同じCDNで同じjQueryファイルを使用する別のサイトをすでに訪問している場合、ファイルはキャッシュされているため、ダウンロードする必要はありません。それより速くなることはできません。

これは、最も広く使用されているCDNのオッズが高くなり、サイトに利益をもたらす可能性があることを意味します。

パフォーマンスに関するいくつかの観察:GoogleのCDNは、北米とヨーロッパの両方で常に3つの中で最も遅いです。ヨーロッパでは、マイクロソフトのCDNが最速です。


3

対象となる視聴者がどこにいるかによると思います。alertra.comを使用して、世界中の多くの場所から両方のCDN速度を確認できます。


これは質問に対する答えを提供しません。批評したり、著者に説明を求めるには、投稿の下にコメントを残してください。
フィオナ-myaccessible.website 2014年

1
フィオナにとって、それは私の質問に対する私の答えです。質問は「重要か」、私の回答は「対象となる視聴者がどこにいるかによる」、そして使用するCDNを決定するために世界中のさまざまな場所から速度をテストするサイトを提供しました。コメントではなく、答えです。
サイレント

3

1つの追加の考慮事項-サイトがSSLであり、Android 2.1(またはそれ以前)をサポートする必要がある場合、Microsoft CDNのHTTPSバージョンのSSL証明書は、この問題に従って、これらのバージョンのAndroidブラウザーをクラッシュさせます:http:// code .google.com / p / android / issues / detail?id = 5001。SSL証明書は技術的に有効であり、AndroidのSSL実装に欠陥があるため、Microsoftの「障害」ではありませんが、それでもサイトがクラッシュします。

GoogleのCDNのSSL証明書は、この特定の問題(証明書の「証明書のサブジェクトの代替名」に関連)には影響しません。

したがって、SSL + Android 2.1をサポートするには、Google CDNを使用してください。


2

私の答えは他とは少し異なります。jqueryを使用している場合、ほとんどの人が必要とするjqueryバリデーターが必要な場合は、マイクロソフトを使用します。

Microsoft CDN http接続はKeep-Aliveであり、複数のアイテムをリクエストする場合に非常に便利です。

したがって、jquery検証が必要な場合は、Microsoft CDNを使用してください。jqueryuiが必要な場合でも、googleはキープアライブを維持しないため、すべてのリクエストが独自のものであるため、microsoftを使用してください。そのため、この方法での混合はプラスです。バリデーターのみにマイクロソフトを使用している場合は、リクエストごとにGoogleサーバーと個別に接続しています。



1

また、Google CDNを使用するときは、jajax.googelapis.comなどのタイプミスをする人もいることを考慮してください。これにより、本当に厄介なxss(クロスサイトスクリプティング)攻撃が行われる可能性があります。私は実際にgooglapis.comのタイプミスを登録することでこれをテストしましたが、すぐにJavaScript、マップ、CSSなどのリクエストを処理していることがわかりました。

私はGoogleにメールを送り、同様のCDN typo URLを登録するように依頼しましたが、返信はありません。タイプミスリクエストを待っている潜在的に危険な攻撃者がいて、xssペイロードでjqueryなどを簡単に処理できるため、これがCDNに依存しない本当の理由である可能性があります。

ありがとうございました


1
少し外れたトピックかもしれませんが、興味深い点です。
achairapart

1

アプリケーションが対象とする業界によっては、他の組織が管理するCDNを使用したくない場合があります。多くの場合、コンプライアンス、プライバシー、機密性に関する問題が発生します。

たとえば、Google Analyticsを安全なアプリケーションに含めても、ブラウザは現在のURLを「リファラー」ヘッダーとして送信します。セッションIDやシークレットトークンなどの識別子がログに表示される場合があります。たとえば、192.0.2.5のクライアントIPがhttps://healthsystem.example/condition/impotenceを参照している場合、まあ、かなりプライベートであると考えられる情報を推測できます。

その他のケースには、口座番号、社会保障番号、URLのセッション情報などの結果の情報が含まれます。この種のデータはアプリケーションの外部で使用できるため、URLに含めないでください。

あなたはグーグル、マイクロソフトまたはヤフーを信頼するかもしれませんが、あなたのユーザーはそうではないかもしれません。

金融、法務、ヘルスケアなどの業界では、BAAに署名できるベンダー(Akamaiなど)の支援を得て独自のCDNを確立することができます。


1

ターゲットとするユーザーの一般的な場所に基づいて使用することをお勧めします。

サイトが一般の人々を対象としている場合は、GoogleのCDNを使用することをお勧めします。

サイトが中国もターゲットにしている場合は、MicrosoftのCDNを使用することをお勧めします。私の経験から、Googleのサーバーが中国政府によってブロックされ続け、それらを使用するWebサイトをロードできないようにレンダリングしていることがわかります。

*地域固有のサイトを作成することもできます。たとえば、cn.mysite.comは特に中国向けですが、リソースと時間に余裕がない場合は、検討する価値があります。

Microsoft CDNの完全なリストはこちら。 http://www.asp.net/ajaxlibrary/cdn.ashx

その後、それらはajax.aspnetcdn.comに名前が変更されました。これにより、ファイアウォールルールによるブロックの可能性が減少します。


-3

両方使います!

Google Jqueryホスティングはずっと以前からあるため、Microsoftのものと比べて、人々がすでにキャッシュしている可能性がはるかに高いので、私は最初にそれを持っているでしょう。

個人的に、私はこのようなものを使用します-

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded  

  document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></scr" + "ipt>");
        }
} else {
    // jQuery is loaded
}

(この100%が機能するかどうかはわかりませんが、例ではなくアイデアを作成するつもりでした-これは、リンクが見つからなかったため、MicrosoftのJqueryではなく、GoogleがホストするJqueryを参照しています)


6
あなたがそれをあなたのページに持っていかない限り、jQueryは決して定義されません。.jsファイルをキャッシュすると、デフォルトですべてのブラウザページで使用できるようになります。
Falkayn、2009年

1
これは動作します:Sスクリプトを再度読み取ります-定義されていない場合は、これを書き込んでロードしますか?
ウィル

12
なぜ人々が "<scr" + "ipt ..."を行うのか理解できませんでした
匿名の臆病者

3
「ブラウザー、他の先行するJavaScriptの量、および全体的なコードの形式に応じて、これは、パーサーが<script>および</ script>タグを文字列としてではなく実行可能なコードとして解釈しないようにするために行われます書きます。」
SeanJA

2
問題は、アクティブにロードしない限りjQuery定義されないことです。スクリプトでは、最初のブランチが常に実行され(上記の別のjQueryインクルージョンがない限り)、スクリプトが不要になります。
jensgram
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.