Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if jQuery is already in cache?

Tags:

jquery

caching

Is there anyway to check on a client if jQuery was loaded before from a CDN? I mean to have code like this:

if (jQuery.isLoadedFromCDN)
//DoNothing
else
//load from internal resource

NOTE that I don't want to check that jQuery is loaded, but specifically if it was loaded from a CDN.

The context is that I have an internal LAN web app that uses jQuery, loading jQuery from the LAN is definitely faster but if it already was downloaded before from a CDN (which is probably the case) then I just want to use that otherwise I want to get it from our internal resource not the cdn. The bandwidth saving is definitely not huge, but I am more curious to know if that's technically possible.

like image 942
kabaros Avatar asked Jan 04 '11 09:01

kabaros


People also ask

How do I know if I have jQuery?

You can test if jQuery is loaded by opening your javascript console (in Chrome: Settings > More tools > Javascript console). Where the little blue arrow appears type: if(jQuery) alert('jQuery is loaded'); Press enter.

How do I ensure jQuery is loaded?

Hence, we have used the $(document). ready() function before we can check if the plugin was loaded successfully or not. The typeof operator returns the data type of its operand in the form of a string. In this case, the operand is the jQuery $ operator itself.


2 Answers

I'm guessing you're checking to see if jQuery was loaded from the Google Libraries API?

Your browser will cache jQuery whether it's from the CDN or from your LAN. If it's already in the cache from a previous retrieval from the CDN, it'll load faster than from your LAN. If it's not already in your cache from either a previous visit to your site, or another site using the same CDN, it'll only need to load once: subsequent visits will load from the cache.

Splitting the URL for jQuery between the CDN and your LAN will just cause two copies to get cached. Let the browser cache do what it was meant to do. :)

like image 66
IvanGoneKrazy Avatar answered Nov 04 '22 01:11

IvanGoneKrazy


This should do it:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.4.js"%3E%3C/script%3E'))</script>

You need to adapt the path for the fallback, which should be located at your domain.

like image 28
jAndy Avatar answered Nov 04 '22 00:11

jAndy