Quiero mostrar desde la memoria caché durante mucho tiempo y quiero un comportamiento ligeramente diferente en el procesamiento de página frente a cargar la página desde la memoria caché. ¿Hay alguna manera fácil de determinar esto con JavaScript?¿Cómo puedo usar JavaScript para detectar si estoy en una página en caché?
Respuesta
Una forma de hacerlo es incluir la hora en que se generó la página en la página y luego usar algunos javascript para comparar la hora local con la hora en que se generó la página. Si el tiempo es diferente para un umbral, entonces la página proviene de un caché. El problema es si la máquina del cliente tiene su hora configurada incorrectamente, aunque puede evitar esto haciendo que el cliente incluya la hora actual del sistema en la solicitud para generar la página y luego envíe ese valor nuevamente al cliente.
No directamente, algunos navegadores pueden tener algunos comandos personalizados para ello.
Hay una solución que haría lo que desee. Use una cookie para almacenar el timestamp
de la primera visita y luego use el META HTTP-EQUIV para establecer el tiempo que el archivo se almacenará en caché (cacheLength
). Si la hora actual está dentro del período de timestamp
a timestamp+cacheLength
, trátela como si se cargaran desde la memoria caché. Una vez que el caché haya expirado, restablezca la hora de la cookie.
Usando XmlHttpRequest puede ver la página actual y luego examinar los encabezados http de la respuesta.
Lo mejor es simplemente hacer una solicitud HEAD y luego examinar los encabezados.
Para algunos ejemplos de esta manera echar un vistazo a http://www.jibbering.com/2002/4/httprequest.html
Estaba a punto de sugerir lo mismo, pero la pregunta indica que quiere ver si la página actualmente cargada está en la memoria caché, si desconectas un XHR, entonces eso sería indicativo de la próxima solicitud, no la actual. –
Gracias, no puedo usar esto, pero el enlace que me enviaste me ayuda con otro problema. –
Empecé con la respuesta "Daniel" dio anteriormente, pero me temo que con una conexión lenta que podía encontrarse con algunos problemas de latencia.
Aquí está la solución que finalmente funcionó para mí. En el lado del servidor agrego un cookie refCount y establezco su valor en 0. En la carga de documentos en el script java, primero compruebo refCount y luego lo incremento. Al verificar si refCount es mayor que 1, sé que la página está en caché. Entonces, esto funciona como un encanto.
Gracias chicos por llevarme a esta solución.
He usado el mismo enfoque yo mismo. Escribí una descripción detallada en mi blog: http: // monket.net/blog/2010/02/detecting-when-a-page-is-loaded-from-the-browser-cache/ – Karl
Si bien esta pregunta ya tiene 4 años. Pensé que agregaría mis 2 centavos usando jQuery y el complemento History.
$(document).ready(function()
{
$('body').append('<div class="is_cached"></div>');
});
History.Adapter.bind(window,'statechange',function(){
if($('.is_cached').length >= 1)
{
alert('this page is cached');
}
});
Cuando se carga el documento por primera vez. Se agrega un nuevo div.is_cached. No hay una forma compatible de ejecutar javascript al cargar una página en caché, pero puede supervisar los cambios en el historial. Cuando el historial cambia y div.is_cached existe, entonces el usuario está viendo un paginado paginado.
¿qué archivos Javascript debo usar para probar esto? Descargué el plugin History pero tiene muchos archivos JS ... ¿cuál está trabajando con esto? –
Utilicé este con jQuery sin ningún problema. https://github.com/balupton/history.js/blob/master/scripts/bundled/html4%2Bhtml5/jquery.history.js – cgTag
Nota: la instrucción IF debería ser> = 1 – cgTag
- 1. ¿Cómo puedo detectar si estoy ejecutándose en la consola?
- 2. ¿Cómo puedo detectar si estoy compilando para una arquitectura de 64 bits en C++
- 3. ¿Cómo detectar si estoy corriendo en un servicio único?
- 4. Cómo detectar si un usuario deja una página en PHP
- 5. Android 2.2 - ¿Cómo puedo detectar si estoy instalado en la tarjeta SD o no?
- 6. ¿Cómo puedo saber si una página saltó al ancla (#) en javascript?
- 7. ¿Cómo puedo detectar si el navegador ha encontrado un error de JavaScript ... en JavaScript?
- 8. ¿Cómo puedo detectar si el usuario está "inactivo" con javascript?
- 9. invalida salida caché si hay una excepción en la página
- 10. ¿Cómo puedo detectar si una pantalla es sensible al tacto?
- 11. will_paginate averiguar si estoy en la última página
- 12. ¿Cómo puedo saber si estoy en el depurador en Android?
- 13. ¿Cómo puedo detectar si quicktime está instalado con javascript?
- 14. ¿Cómo puedo detectar si hay un disquete en una unidad?
- 15. ¿Cómo puedo detectar kindle fire con javascript?
- 16. ¿Cómo se puede detectar si una página está en segundo plano o en primer plano con jquery/javascript?
- 17. Detectar si se muestra una alerta o confirmación en una página
- 18. ¿Cómo puedo detectar cuándo se carga una página web?
- 19. ¿Cómo guardo en caché una página web en PHP?
- 20. Cómo detectar si estoy compilando código con Visual Studio 2008?
- 21. ¿Cómo puedo detectar una actualización de página usando jquery?
- 22. ¿Cómo detectar si una página HTML contiene un video?
- 23. Cómo almacenar en caché una imagen en Javascript
- 24. ¿Cómo puedo usar innerhtml en JavaScript?
- 25. Javascript para detectar si el usuario cambia la pestaña
- 26. ¿Cómo puedo verificar si estoy ejecutando Windows en Python?
- 27. Usando una tabla de caché en SQLServer, ¿estoy loco?
- 28. Cómo puedo saber en qué página estoy en una aplicación MVC de ASP.NET
- 29. Javascript para detectar cuando una página se ha cargado en otra ventana en Firefox
- 30. ¿Cómo puedo redireccionar una página con javascript en Greasemonkey?
maldita sea, me ganaste, ¡aprobado! – Bogdan
Estaba pensando en esta solución. Esperaba algo más fácil en el documento, pero tal vez no exista :) –
Esta no es una buena respuesta si lo que buscas es trabajar con coherencia. Entre los tiempos de carga lenta, la hora local del servidor frente a la hora local del cliente o los clientes con fechas de sistema incorrectas, no hay manera de garantizar la veracidad de esa prueba. –