Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Consulta sobre el Ejercicio 11 (Introducción a AJAX)

30 de noviembre de 2014

El ejercicio puede verse resuelto en este enlace

Pero tengo dudas respecto a esta línea:

peticion.open('GET', recurso+'?nocache=' + Math.random(), true);

Literalmente significa que se está pasando un valor aleatorio como parámetro GET sobre la variable nocache, y líneas antes se cargaba en el input text la URL de la misma página del ejemplo.

¿Cómo se interpreta nocache si la página es HTML? ¿De qué sirve exactamente el valor que se le está pasando?

Porque he ejecutado lo mismo borrando el parámetro nocache y el resultado aparentemente es el mismo.

EDIT: Acabo de encontrar la respuesta en uno de los artículos siguientes.


Respuestas

#1

Como tú mismo parece que has descubierto, la idea del parámetro nocache es evitar que la respuesta sea cacheada por el navegador. De esta manera, siempre que el usuario realice la petición se consultará al servidor antes de mostrar el resultado en el navegador.

Seguro que se podría hacer esto mismo de muchas maneras, pero el truco de pasar un valor aleatorio (y por tanto, siempre diferente) es uno de los más simples y que mejor funcionan.

@javiereguiluz

1 diciembre 2014, 20:56
#2

Eso quiere decir que si no uso ese parámetro, ¿se consultará la caché del navegador y en vez de realizar la petición al servidor se mostrará la respuesta que ya se trajo anteriormente?

Y de haberse realizado una modificación en el archivo que se está trayendo, ¿cómo se enteraría de ello la página? ¿tendría que pasar días hasta que la caché sea limpiada?

Gracias por responder.

@sorcjc

12 diciembre 2014, 19:50
#3

Me temo que no hay una respuesta definitiva a tus preguntas ... y esa es precisamente una de las principales razones para utilizar el parámetro nocache.

Si no añades ese nocache que tiene un valor diferente cada vez, la URL siempre será la misma. Y eso significa que estás a expensas del comportamiento que tenga tanto el cliente (el navegador del usuario) como el servidor (y todos los proxys y sistemas de caché intermedios hasta el servidor).

Y lo que es peor: no sabes cuál es el comportamiento de las cachés que pueden existir y tampoco puedes influir en ellas de ninguna manera definitiva (puedes utilizar cabeceras HTTP relacionadas con la caché, pero en la práctica no en todos los casos se siguen fielmente).

Como ves, cuando se trata de cachés del navegador y de todos los elementos intermedios hasta el servidor, estás "vendido" y es mejor ir sobre seguro añadiendo parámetros como el nocache.

@javiereguiluz

12 diciembre 2014, 21:57