2009-02-11 16 views
13

¿Cómo puedo comprobar si hay un archivo javascript en la memoria caché del usuario? Si refrescó la página o visita el sitio después de algún tiempo. No necesito descargar ese archivo js nuevamente. ¿Los archivos js se limpian después de que se cierra un sitio?Comprobar la caché del navegador para un archivo js

+0

Esta pregunta está profundamente confundida hasta el punto de la inutilidad, y no tengo ni idea de por qué obtuvo upvotes. Primero dices, sin explicar por qué, que quieres verificar si el navegador tiene un archivo en caché (lo cual es posible, pero solo a través de ataques de tiempo, no hay API para él). Luego dices que quieres saber esto para evitar descargar el archivo nuevamente, pero el navegador * maneja esa lógica para ti * si le das los encabezados correctos, por lo que esta motivación parece no tener sentido. Finalmente, usted hace otra pregunta no relacionada y poco clara sobre si los archivos js "se limpian" después de que un sitio se "cierra". ¿Huh? –

+0

@MarkAmery ¿puede por favor vincular esa explicación de verificación de "ataque de tiempo"? – setec

+1

@setec Aquí hay un trabajo académico sobre esto desde hace 15 años: http://sip.cs.princeton.edu/pub/webtiming.pdf. No se ha corregido desde entonces, a pesar de ser un agujero de privacidad. La versión de tl; dr es: crea una etiqueta '' con los atributos 'onload' y' onerror' que apuntan a la URL que te interesa, y utiliza JavaScript para medir el tiempo que tardan en llamar a uno de los manejadores. Si es en un par de milisegundos, el usuario tenía el URL de destino en la memoria caché. –

Respuesta

11

Si un archivo javascript está almacenado en caché depende de cómo está configurado su servidor web, cómo está configurado el navegador de los usuarios y también cómo se configuran los servidores proxy HTTP entre su servidor y el usuario. Lo único que puedes controlar es cómo está configurado tu servidor.

Si desea la mejor posibilidad de que su javascript esté en caché, entonces su servidor debe enviar los encabezados HTTP correctos con el archivo javascript. Exactamente cómo lo hace depende del servidor web que esté utilizando.

Aquí hay un par de enlaces que pueden ayudar:

Apache - http://httpd.apache.org/docs/2.0/mod/mod_expires.html

IIS - http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0fc16fe7-be45-4033-a5aa-d7fda3c993ff.mspx?mfr=true

4

El navegador buscará automáticamente después de lo que tiene en su propia caché. Sin embargo, existen varios mecanismos que puede usar para controlarlo.

examinar las diversas cabeceras de caché HTTP, tales como:

  • -de la última actualización
  • Expira
  • ETag

El Expira cabecera es el más crítico de estos cuando se trata de al almacenamiento en caché del lado del cliente. Si configura un encabezado Expires futuro lejano (por ejemplo, 10 años), el navegador no volverá (en teoría) al servidor para ese archivo. Por supuesto, entonces necesita un método para cambiar el nombre del archivo cuando cambia el contenido del archivo. La mayoría de las personas gestiona esto al agregar un número de compilación a la ruta del archivo.

2

El navegador se encargará del almacenamiento en caché.

Cuando la memoria caché se vacía depende en parte de la configuración del navegador y en parte de los encabezados que envía. Si configura un encabezado Expires, el navegador no debe volver a solicitar el archivo hasta que haya expirado. Leer sobre HTTP Headers podría ayudarlo.

Cuestiones relacionadas