tutorial online ejemplos componentes jquery jquery-mobile

online - jquery mobile themes



Los encabezados de CADQ y Far-Future Expire de jQuery (2)

Pregunta

¿Por qué el contenido servido desde el CDN de jQuery no tiene encabezados caducados en el futuro lejano? (o, "¿Qué estoy haciendo mal aquí?")

Fondo

Estoy usando jQuery y jQuery Mobile en un proyecto web. Para servir estos scripts, uso el CDN de jQuery, según sus instrucciones . Sin embargo, me he dado cuenta de que estos recursos se publican sin encabezados de futuro lejano expira, lo que impide que los navegadores puedan almacenarlos de manera inteligente.

Aunque los servidores jQuery responderán con 304 Not Modified , eso no es lo mismo que un encabezado expire, lo que anula por completo. Me doy cuenta de que la respuesta simple aquí es "porque no lo hacen", sin embargo, me pregunto por qué no lo hacen, y si hay alguna forma de que pueda brindar este contenido, idealmente desde un CDN, con encabezados de futuro lejano.

Gracias por tu tiempo.

Ejemplos

jQuery CDN

http://code.jquery.com/jquery-1.6.4.min.js

Respuesta:

HTTP/1.1 304 Not Modified Date: Wed, 16 May 2012 00:05:27 GMT ETag: "9e68e84-16615-6ad9bfc0+gzip" Last-Modified: Mon, 12 Sep 2011 22:55:03 GMT Server: ECS (dca/532A) Vary: Accept-Encoding X-Cache: HIT

Google CDN

https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js

Respuesta:

HTTP/1.1 200 OK age:134505 cache-control:public, max-age=31536000 content-encoding:gzip content-length:32103 content-type:text/javascript; charset=UTF-8 date:Mon, 14 May 2012 10:45:15 GMT expires:Tue, 14 May 2013 10:45:15 GMT last-modified:Mon, 02 Apr 2012 18:24:28 GMT server:sffe status:200 OK vary:Accept-Encoding version:HTTP/1.1 x-content-type-options:nosniff x-xss-protection:1; mode=block

Tenga en cuenta que la fecha de expiración del futuro lejano expires:Tue, 14 May 2013 10:45:15 GMT

Solución

Estoy usando la versión alojada de CDN de Microsoft que presenta una fecha de caducidad de 1 año:

http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.1.0/jquery.mobile-1.1.0.min.js

Lista completa de archivos alojados CDN .

@zuul explicó a continuación por qué algunos artículos alojados en CDN tienen encabezados caducados más largos que otros. ¡Gracias!


Todo el problema del almacenamiento en caché depende de los enlaces que estás usando. He observado que con mucha frecuencia las personas no están enlazando con los números de versión exacta de jQuery.

Por ejemplo, desde code.jquery.com puede hacer referencia a este archivo ...

http://code.jquery.com/jquery-latest.min.js

... y siempre obtendrás la última copia de jQuery.

O puede hacer algo similar de Google ...

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js

El de Google obtendrá la última versión, suponiendo que comience con "1". El problema es que cuando utiliza estas referencias no obtiene una fecha de vencimiento para un futuro lejano en el encabezado de control de caché. Por lo tanto, el navegador del usuario buscará actualizaciones con demasiada frecuencia, lo que ralentizará los tiempos de carga de su sitio.

De hecho, aquí hay un desglose de varias opciones y su configuración de vencimiento ...

http://code.jquery.com/jquery-latest.min.js (sin caché)

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js (1 hora)

http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js (1 hora)

http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js (1 año)

Al indicar explícitamente la versión exacta de jQuery, quiere que Google envíe un encabezado de edad máxima de 1 año. Por lo tanto, aumenta mucho las posibilidades de que el cliente simplemente use una copia en caché. Y si una nueva versión de jQuery incluye correcciones de errores o funciones que realmente desea, simplemente actualice su enlace.

Esta explicación proviene de BucketSoft Blog