Microsoft and Google CDN Response Times

on Saturday, September 26, 2009

Last week Microsoft announced that it would be hosting some of the common javascript files used with ASP.NET applications (jQuery, Microsoft AJAX, etc). Google had been doing this for a while through both standard CDN and ajax library calls, but it was great to see Microsoft also put up a resource which hosted the MS specific javascript files that you can’t find else where.

The applications that I work with are already using the Google CDN to load jQuery and jQuery-UI, but I wanted to know if there would be a benefit to switching. The most important thing for a CDN is to be fast, and Microsoft/Akamai is pretty darn fast. Below are the results of a ping test to the servers:

smaglio@sensei:~$ ping ajax.microsoft.com
PING a1363.g.akamai.net (70.183.191.139) 56(84) bytes of data.
64 bytes from a-70-183-191-139.deploy.akamaitechnologies.com (70.183.191.139): icmp_seq=1 ttl=60 time=13.8 ms
64 bytes from a-70-183-191-139.deploy.akamaitechnologies.com (70.183.191.139): icmp_seq=2 ttl=60 time=16.1 ms
64 bytes from a-70-183-191-139.deploy.akamaitechnologies.com (70.183.191.139): icmp_seq=3 ttl=60 time=16.5 ms
64 bytes from a-70-183-191-139.deploy.akamaitechnologies.com (70.183.191.139): icmp_seq=4 ttl=60 time=26.7 ms
64 bytes from a-70-183-191-139.deploy.akamaitechnologies.com (70.183.191.139): icmp_seq=5 ttl=60 time=15.2 ms
^C
--- a1363.g.akamai.net ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 13.854/17.711/26.758/4.620 ms
smaglio@sensei:~$ ping ajax.googleapis.com
PING googleapis-ajax.l.google.com (209.85.225.95) 56(84) bytes of data.
64 bytes from iy-in-f95.google.com (209.85.225.95): icmp_seq=1 ttl=55 time=73.2 ms
64 bytes from iy-in-f95.google.com (209.85.225.95): icmp_seq=2 ttl=55 time=77.7 ms
64 bytes from iy-in-f95.google.com (209.85.225.95): icmp_seq=3 ttl=55 time=76.2 ms
64 bytes from iy-in-f95.google.com (209.85.225.95): icmp_seq=4 ttl=55 time=74.6 ms
64 bytes from iy-in-f95.google.com (209.85.225.95): icmp_seq=5 ttl=55 time=71.3 ms
64 bytes from iy-in-f95.google.com (209.85.225.95): icmp_seq=6 ttl=55 time=69.5 ms
^C
--- googleapis-ajax.l.google.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5007ms
rtt min/avg/max/mdev = 69.592/73.815/77.725/2.772 ms

2 comments:

Alan said...

How long do they take to service GET requests? That's the real test.

Cheers,
Alan

Steven Maglio said...

Your right. So, here are two other ways of looking at the GET request speed.

Here is a list of wget output (highly truncated) with the transfer rates from each CDN:

smaglio@sensei:~$ ./cdn_speed_test.pl http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js
2009-09-27 09:50:37 (735 KB/s) - `jquery-1.3.2.min.js.1' saved [59326]
2009-09-27 09:50:38 (466 KB/s) - `jquery-1.3.2.min.js.2' saved [59326]
2009-09-27 09:50:38 (585 KB/s) - `jquery-1.3.2.min.js.3' saved [59326]
2009-09-27 09:50:38 (574 KB/s) - `jquery-1.3.2.min.js.4' saved [59326]
2009-09-27 09:50:38 (594 KB/s) - `jquery-1.3.2.min.js.5' saved [59326]

smaglio@sensei:~$ ./cdn_speed_test.pl http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
2009-09-27 09:52:11 (376 KB/s) - `jquery.min.js' saved [57254]
2009-09-27 09:52:11 (315 KB/s) - `jquery.min.js.1' saved [57254]
2009-09-27 09:52:11 (393 KB/s) - `jquery.min.js.2' saved [57254]
2009-09-27 09:52:12 (322 KB/s) - `jquery.min.js.3' saved [57254]
2009-09-27 09:52:12 (355 KB/s) - `jquery.min.js.4' saved [57254]


And, I threw together a small .NET program which uses the System.Net.WebRequest object to retrieve the file while recording the total running time. The results are:

[0] http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js: [00:00:00.0479270]
[1] http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js: [00:00:00.0402130]
[2] http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js: [00:00:00.0440410]
[3] http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js: [00:00:00.0453940]
[4] http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js: [00:00:00.0474380]
[5] http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js: [00:00:00.0490650]
[6] http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js: [00:00:00.0424820]
[7] http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js: [00:00:00.0478870]
[8] http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js: [00:00:00.0472280]
[9] http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js: [00:00:00.0446160]
[0] http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js: [00:00:00.0573230]
[1] http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js: [00:00:00.0565780]
[2] http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js: [00:00:00.0614470]
[3] http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js: [00:00:00.0619700]
[4] http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js: [00:00:00.0605390]
[5] http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js: [00:00:00.0578550]
[6] http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js: [00:00:00.0606880]
[7] http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js: [00:00:00.0548510]
[8] http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js: [00:00:00.0781020]
[9] http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js: [00:00:00.0612060]


Microsoft/Akamai edges out Google on each test, but only slightly. Both of their CDN's are still much faster that the servers I work with and they are both providing a great service for all web developers.

Post a Comment


Creative Commons License
This site uses Alex Gorbatchev's SyntaxHighlighter, and hosted by herdingcode.com's Jon Galloway.