回答:
コメントに基づいて更新:
ショートバージョン:それほど重要ではありませんが、ホストするものに依存する場合があります。彼らはすべてのホストの異なるもの: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:
私たちのサーバー:
ビルドプロセスの一部はすべてのカスタムJavaScriptを組み合わせて縮小するため、ビルドに応じてこれらのスクリプトのリリースまたはデバッグ(非縮小)バージョンを含むカスタムスクリプトマネージャーを介してこれを行います。GoogleはjQuery検証パッケージをホストしていないため、これはマイナス面になる可能性があります。MVCはこれを2.0リリースに組み込んだり使用したりしているため、すべてのニーズについてMicrosoftのCDNに完全に依存することができ、すべてがScriptManagerを介して自動的に行われます。
行われる他の唯一の議論はDNS時間です。ページの読み込み速度の点でこれにはコストがかかります。 平均的に:使用量が多い(長い間使用されている)ためにajax.googleapis.com
DNSより早く返される可能性が高いのはajax.microsoft.com
、ローカルDNSサーバーがリクエストを取得する可能性が高いためです(これは、領域ペナルティの最初のユーザーです)。 。これは非常にマイナーなことであり、ミリ秒までのパフォーマンスが非常に重要な場合にのみ検討する必要があります。
(はい:私はこの点が両方のCDNを使用することに反することを理解していますが、私たちの場合、DNS時間は、発生するJavaScript /ブロッキングの待機時間によってはるかに覆い隠されています)
最後に、あなたはそれを見ていない場合は、そこにあるから最高のツールの1 Firebugは、そのためのいくつかのプラグイン:ページスピードとYSlowの。CDNを使用しているが、キャッシュヘッダーがないためにページが毎回画像を要求している場合は、簡単に解決できる方法がありません。FirebugのNetパネルは、ページの読み込み時間の内訳をすばやく提供します。PageSpeed / YSlowは、役立ついくつかの良い提案を提供します。
jQueryには必ずGoogle CDNを使用してください(これはMicrosoft中心の開発者によるものです)。
単純な統計です。jQueryにMS CDNを使用することを検討する人は、常に少数派です。Googleを使用し、Microsoftの使用を考慮しない、jQueryを使用する非MS開発者が多すぎます。以来、公共CDNとの大きな勝利の一つは、改善キャッシングされ、複数のCDN間の分割の使用はその利益の可能性を減少させます。
考慮すべき1つのマイナーなことは、両方の会社がわずかに異なる「追加の」ライブラリを提供していることです。
ニーズによっては、これが適切な場合があります。
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を使用することを強くお勧めします。
私はここで少し遅くなっているのを知っていますが、ここで私が生産で使用しているコードがあります。問題は一度もありませんが、走行距離はさまざまです。必ず自分の環境でテストしてください。
<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>
それは統計についてです:jquery.comはGoogleからjQueryをロードします。また、Twitter、Stackoverflow、その他多くのサービスも同様です。したがって、あなたのウェブサイトのユーザーが既にそれをキャッシュしている可能性が非常に高い= ダウンロードはまったくありません。
これが主な利点であるため、バリデーター、帯域幅、および速度を忘れてください。それ以外の場合、他のCDNオプションは基本的に同じレベルで実行されます。
1つは他よりも潜在的に高速ですか?
実際に私はこれに興味があったので、次のそれぞれを使用してjsbinテストページをセットアップし、webpagetest.orgの視覚的比較ツールを実行しました。私がテストした:
誰が最速でしたか: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
対象となる視聴者がどこにいるかによると思います。alertra.comを使用して、世界中の多くの場所から両方のCDN速度を確認できます。
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を使用してください。
私の答えは他とは少し異なります。jqueryを使用している場合、ほとんどの人が必要とするjqueryバリデーターが必要な場合は、マイクロソフトを使用します。
Microsoft CDN http接続はKeep-Aliveであり、複数のアイテムをリクエストする場合に非常に便利です。
したがって、jquery検証が必要な場合は、Microsoft CDNを使用してください。jqueryuiが必要な場合でも、googleはキープアライブを維持しないため、すべてのリクエストが独自のものであるため、microsoftを使用してください。そのため、この方法での混合はプラスです。バリデーターのみにマイクロソフトを使用している場合は、リクエストごとにGoogleサーバーと個別に接続しています。
夏には、マイクロソフトはUIを提供していないと言っていますが、これは正しくありません(それ以上)。http://www.asp.net/ajaxlibrary/cdn.ashxでダウンロードロードできます。
また、Google CDNを使用するときは、jajax.googelapis.comなどのタイプミスをする人もいることを考慮してください。これにより、本当に厄介なxss(クロスサイトスクリプティング)攻撃が行われる可能性があります。私は実際にgooglapis.comのタイプミスを登録することでこれをテストしましたが、すぐにJavaScript、マップ、CSSなどのリクエストを処理していることがわかりました。
私はGoogleにメールを送り、同様のCDN typo URLを登録するように依頼しましたが、返信はありません。タイプミスリクエストを待っている潜在的に危険な攻撃者がいて、xssペイロードでjqueryなどを簡単に処理できるため、これがCDNに依存しない本当の理由である可能性があります。
ありがとうございました
アプリケーションが対象とする業界によっては、他の組織が管理するCDNを使用したくない場合があります。多くの場合、コンプライアンス、プライバシー、機密性に関する問題が発生します。
たとえば、Google Analyticsを安全なアプリケーションに含めても、ブラウザは現在のURLを「リファラー」ヘッダーとして送信します。セッションIDやシークレットトークンなどの識別子がログに表示される場合があります。たとえば、192.0.2.5のクライアントIPがhttps://healthsystem.example/condition/impotenceを参照している場合、まあ、かなりプライベートであると考えられる情報を推測できます。
その他のケースには、口座番号、社会保障番号、URLのセッション情報などの結果の情報が含まれます。この種のデータはアプリケーションの外部で使用できるため、URLに含めないでください。
あなたはグーグル、マイクロソフトまたはヤフーを信頼するかもしれませんが、あなたのユーザーはそうではないかもしれません。
金融、法務、ヘルスケアなどの業界では、BAAに署名できるベンダー(Akamaiなど)の支援を得て独自のCDNを確立することができます。
ターゲットとするユーザーの一般的な場所に基づいて使用することをお勧めします。
サイトが一般の人々を対象としている場合は、GoogleのCDNを使用することをお勧めします。
サイトが中国もターゲットにしている場合は、MicrosoftのCDNを使用することをお勧めします。私の経験から、Googleのサーバーが中国政府によってブロックされ続け、それらを使用するWebサイトをロードできないようにレンダリングしていることがわかります。
*地域固有のサイトを作成することもできます。たとえば、cn.mysite.comは特に中国向けですが、リソースと時間に余裕がない場合は、検討する価値があります。
Microsoft CDNの完全なリストはこちら。 http://www.asp.net/ajaxlibrary/cdn.ashx
その後、それらはajax.aspnetcdn.comに名前が変更されました。これにより、ファイアウォールルールによるブロックの可能性が減少します。
両方使います!
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を参照しています)
jQuery
定義されないことです。スクリプトでは、最初のブランチが常に実行され(上記の別のjQueryインクルージョンがない限り)、スクリプトが不要になります。