Should I link to Google API's cloud for JS libraries?
I'm looking for the pros/cons of pulling jQuery & other JS libraries from Google API's cloud as opposed to downloading files and deploying directly.
What say you?
My decision
The likelihood of the lib already cached on the users system is the overriding factor for me, so I'm going with a permalink to googleapis.com (e.g. ajax.googleapis.com/ajax/libs/…). I agree with others here that loss of access to the Google server cloud is a minimal concern.
Solution 1:
Con
- Users in countries embargoed by the U.S. (e.g. Iran) won't get a response from Google
Solution 2:
Pros: It may already be cached on the user's system. Google has big pipes. You don't pay for the bandwidth.
Cons: You now have two different ways for your site to become unavailable: A service interruption on your server or one on Google's server.
Solution 3:
I've been looking at the real-world performance of the Google loader for jQuery, particularly, and here's what I've found:
- Google's servers are quick and plenty reliable.
- They are serving from a CDN, which means if you have a lot of overseas users they'll get much better load times.
- They are not serving gzipped files. So they're serving a lot more bytes than they need to.
If you know what you're doing in Apache, Lighttpd, or whatever you're serving files with, you could set your cache headers just like Google's and significantly reduce the amount of data your end user has to download by serving it from your own server. You could also combine your scripts at that point and reduce your overall HTTP requests.
Bottom line: Google's performance is good but not great. If you have many many overseas users then Google is probably better, if your users are mostly US-based and maximum performance is your concern, learn about caching, Etags, gzipping, etc. and serve it yourself.
Solution 4:
Pros:
- Google's connectivity is probably way better than yours
- It's a free CDN (content distribution network)
- Your webapp might load faster, since you're using a CDN
Cons:
- If/when you need to optimize by repackaging a subset of that third-party JS library, you're on your own, and your webapp might then load slower
Solution 5:
In addition to points made by others I'll point out two additional cons:
- An additional external HTTP request, so assuming you have a Javascript file of your own (almost certain) that's two minimum instead of one minimum; and
- IMHO because jQuery load is async your entire page can load before the library has loaded so the effects that you do on document ready are sometimes visibly noticeable to the user when they are applied. I think this is not a great user experience.