2011-01-04 21 views
13

¿Hay alguna manera de verificar en un cliente si jQuery se cargó antes desde un CDN? Me refiero a tener un código como éste:¿Cómo comprobar si jQuery ya está en caché?

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

en cuenta que yo no quiero comprobar que jQuery se carga, pero específicamente si se cargó de un CDN.

El contexto es que tengo una aplicación web LAN interna que utiliza jQuery, cargar jQuery desde la LAN es definitivamente más rápido, pero si ya se descargó antes de un CDN (que probablemente sea el caso) entonces solo quiero usar que de lo contrario quiero obtenerlo de nuestro recurso interno, no del cdn. El ahorro de ancho de banda definitivamente no es enorme, pero tengo más curiosidad por saber si eso es técnicamente posible.

Respuesta

0

Que yo sepa, eso no es realmente posible. 2 cosas saltan a la mente sin embargo, que puede ayudarle a:

  1. Uso Etags: Identificar sus recursos en el lado servidor web. De esta manera, su navegador funciona para usted: identifique si un recurso ya está cargado, independientemente del dominio en el que se cargó
  2. Si realmente desea saber de qué dominio se cargó jQuery, puede hacer solicitudes ficticias AJAX. Solo puede hacer solicitudes AJAX desde el mismo dominio desde el que se cargó su biblioteca (excepto, por supuesto, al hacer una solicitud JSONP). Entonces, si su jQuery se cargó desde su recurso de LAN, obtendrá trplies de las solicitudes de AJAX a su servidor de red LAN, y eso descarta el CDN.

creo que sirve,

Bart

3

supongo que está comprobando para ver si jQuery se carga desde el Google Libraries API?

Su navegador guardará en caché jQuery ya sea desde el CDN o desde su LAN. Si ya está en la memoria caché de una recuperación anterior desde el CDN, se cargará más rápido que desde su LAN. Si aún no está en su memoria caché desde una visita anterior a su sitio u otro sitio que usa el mismo CDN, solo tendrá que cargar una vez: las visitas posteriores se cargarán desde la memoria caché.

La división de la URL de jQuery entre el CDN y su LAN solo causará que se almacenen dos copias. Deje que la memoria caché del navegador haga lo que debe hacer. :)

1

Esto debe hacerlo:

<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> 

Usted necesidad de adaptar el camino para el repliegue, que debe ser ubicado en su dominio.

+0

¿Qué pasa con 1.4.4 ?! – lonesomeday

+0

@lonesomeday: simplemente solucioné eso, copié esas líneas de una fuente anterior. – jAndy

+0

@jAndy unescape está en desuso! ¿Puedes sugerir una mejor alternativa? – equitharn

Cuestiones relacionadas