2011-10-19 11 views

Respuesta

7

Esto podría ser para asegurarse de que la página/imagen/lo que sea no se tome de la memoria caché del usuario. Si el enlace es diferente cada vez, el navegador lo obtendrá del servidor en lugar de la caché, asegurándose de que sea la última versión.

También podría ser para seguir el progreso de las personas a través del sitio. Mejor explicado con una pequeña historia:

  1. Un usuario visita example.com. Todos los enlaces reciben el mismo número aleatorio (digamos 4).
  2. El usuario abre un enlace en una nueva ventana/pestaña, y el enlace es page2.php? Rnd = 4. Todos los enlaces en esta página reciben el número aleatorio 7.
  3. El usuario puede hacer clic en el enlace a page3.php de la pestaña original o la nueva, y el software de análisis en el servidor puede indicar cuál de ellos tiene rnd = 4 o rnd = 7.

Todo lo que podemos hacer es sugerir posibilidades. No hay una razón estándar para poner rnd = en una URL, y no podemos conocer los motivos del diseñador de la página web sin ver el software del servidor.

4

Casi siempre es para el almacenamiento en caché.

6

Internet Explorer y otros navegadores leerán una URL de imagen, descargarán la imagen y la almacenarán en un caché.

Si su aplicación va a actualizar la imagen de forma regular, y quiere que sus usuarios no vean una imagen en caché, la URL debe ser única cada vez.

Por lo tanto, al agregar una cadena aleatoria se asegura que esto será único y se descargará en la memoria caché cada vez.

2

Como ha sido sugerido por otros. Este tipo de comportamiento generalmente se usa para evitar problemas de almacenamiento en caché cuando llama a una página que devuelve datos de contenido dinámico.

Por ejemplo, supongamos que tiene una página que obtiene información actual del usuario, como "mysite.com/CurrentUserData". Ahora, en la primera llamada a esta página, los datos del usuario se devolverán como se esperaba, pero dependiendo de los ajustes de tiempo y almacenamiento en caché, la segunda llamada puede devolver los mismos datos, incluso aunque los datos esperados se hayan actualizado.

La razón principal para el almacenamiento en caché es, por supuesto, optimizar la velocidad de las solicitudes frecuentes. Pero en el caso en que esto no se desee, se sabe que agregar un valor aleatorio como un parámetro de cadena de consulta es una solución ampliamente utilizada.

Sin embargo, existen otras formas de evitar este problema. Por ejemplo, si estaba haciendo una solicitud de Ajax con javascript/JQuery. Puede establecer el caché en falso en su llamada ...

$.ajax({url: 'page.html', cache: false}); 

también podría cambiarlo para todas las llamadas de página en la carga de documentos con ...

$.ajaxSetup({cache: false}}); 

Si se va a hacer una aplicación MVC, incluso se puede desactivar el almacenamiento en caché en los métodos de acción de control con un atributo como tal ...

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 
public ActionResult NonCacheableData() 
{ 
    return View(); 
} 

(gracias a una copia rápida y pegar de here)

Me atrevo a decir que también hay configuraciones en IIS que podría aplicar para obtener el mismo efecto, aunque todavía no he llegado tan lejos con esto.

Cuestiones relacionadas