Microsoft は Windows Azure などで利用するために、日本国内に CDN のエッジサーバを用意しています。その CDN エッジサーバを利用して jQuery などの有名な JavaScript ライブラリを配信する、Microsoft Ajax CDN というサービスを提供しています。
Microsoft Ajax Content Delivery Network - ASP.NET Ajax Library
使い方は非常に簡単で、普通に script タグで提供されている URL を読み込むようにするだけです。
<!-- jQuery 2.0.3 を読み込む --> <script src="//ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.3.min.js"></script>
スキームを省略しているのは https の時に対応するためです。ちゃんと圧縮とキャッシュも有効になっているので、ネットワークアクセスでのオーバーヘッドが最低限に抑えられています。
同じようなサービスとして Google が提供している Google Hosted Libraries があり、世間的にはこちらの方がよく使われている印象ですね。
Make the Web Faster — Google Developers
双方のサービスで配信されているライブラリを表にまとめてみました。
Microsoft Ajax CDN | Google Hosted Libraries |
---|---|
jQuery jQuery Migrate jQuery UI jQuery Validation jQuery Mobile jQuery Templates jQuery Cycle jQuery DataTables Modernizr Ajax Control Toolkit JSHint Knockout Globalize Respond Bootstrap |
AngularJS ChromeFrame Dojo ExtCore jQuery jQueryUI MooTools Prototype script.aculo.us SWFObject WebFontLoader |
jQuery プラグインが Microsoft Ajax CDN の方が充実しているのに対して、JavaScript フレームワークが充実しているのが Google Hosted Libraries ということになりますね。配信されているライブラリには差がありますが、jQuery と jQuery UI は双方で配信されているので、好きな方を選んで使うことができます。
でも、私の環境から Microsoft Ajax CDN と Google Hosted Libraries のレイテンシを確認すると、Microsoft Ajax CDN の方が短い傾向がありました。
まずは Microsoft Ajax CDN の エッジサーバへ向けて ping を打った結果です。
PS C:\Users\shibayan> ping ajax.aspnetcdn.com mscomajax.vo.msecnd.net [65.54.91.121]に ping を送信しています 32 バイトのデータ: 65.54.91.121 からの応答: バイト数 =32 時間 =18ms TTL=54 65.54.91.121 からの応答: バイト数 =32 時間 =21ms TTL=54 65.54.91.121 からの応答: バイト数 =32 時間 =20ms TTL=54 65.54.91.121 からの応答: バイト数 =32 時間 =27ms TTL=54 65.54.91.121 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 18ms、最大 = 27ms、平均 = 21ms
次に Google Hosted Libraries のエッジサーバへ向けて ping を打った結果です。
PS C:\Users\shibayan> ping ajax.googleapis.com googleapis.l.google.com [74.125.23.95]に ping を送信しています 32 バイトのデータ: 74.125.23.95 からの応答: バイト数 =32 時間 =55ms TTL=45 74.125.23.95 からの応答: バイト数 =32 時間 =55ms TTL=45 74.125.23.95 からの応答: バイト数 =32 時間 =77ms TTL=45 74.125.23.95 からの応答: バイト数 =32 時間 =54ms TTL=45 74.125.23.95 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 54ms、最大 = 77ms、平均 = 60ms
tracert を実行したところ、Microsoft Ajax CDN の方がホップ数が少なかったです。環境に左右されるとは思いますが、Microsoft Ajax CDN も選択肢の一つに入れても良いのではないかと思います。
なお、Microsoft Ajax CDN と Google Hosted Libraries に共通の事項として、何らかの問題が発生して CDN からの読み込みが失敗した時のために、フォールバック用のコードを仕込んでおいた方が安全でしょう。
<script src="//ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.3.min.js"></script> <script>window.jQuery || document.write('<script src="js/jquery-2.0.3.min.js"></script>')</script>
Scott Hanselman 氏のブログでは ASP.NET の ScriptManager や Bundle を使った方法も紹介されています。
CDNs fail, but your scripts don't have to - fallback from CDN to local jQuery - Scott Hanselman
Windows Azure の日本リージョンも来年には稼働が開始しますし、日本にエッジサーバが増えて帯域も広くなる可能性もあるので期待したいですね。