Google's CDN is down (404)
ajax.googleapis.com
ajax.googleapis.com
For anyone that this freaks out and wonders how they can utilize the googleapis service in the future but have a fallback incase things fall apart, here is a fun little snippet that I got from the HTML5 boilerplate[1] project to help:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="/public/scripts/libs/jquery-1.4.4.min.js"%3E%3C/script%3E'))</script>
More or less, you try the Google CDN, then you try and execute your own script right after that checks for the existence of an API-provided element, if it's not there then the CDN failed and you load it directly from your own server.TIP: You can use "!jQuery.ui" as the check for jQuery-UI if you are using that.
The first time I saw this approach I thought "well that's ugly", but it's the 0.01% of the time that it gets you out of a bind that I think makes it worth it.
Q: Does anyone happen to know if scripts are loaded serially in all browsers? Is there ever a scenario where the 2nd script executes before the 1st script tag loads from the CDN and inits the jQuery object?
Disclaimer: I'm one of the founders of cdnjs.
This can be done with most libraries by identifying the libraries global variable. e.g. for Modernizr
<script>!window.Modernizr && document.write(unescape('%3Cscript src="/public/scripts/libs/modernizr.js"%3E%3C/script%3E'))</script>
https://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFI...
edit still down http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.j...
http://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd...
and this one appears to be working currently.
In fact dynamic resources can be served as well using the stale-if-error Cache-Control header. http://tools.ietf.org/html/rfc5861#section-4