Nicholas C.Zakas publica un artículo que muestra que cada navegador interpreta los estándares web como quiere. En este caso nos pone un ejemplo:
<img src="" />
y el mismo en Javascript
var img = new Image();
img.src = "";
En los ejemplos vemos que creamos un tag <img />
(en Javascript un objeto Image()
) al que no le indicamos la ruta de la imagen.
Estudiando el resultado en los diferentes navegadores, ha descubierto que partiendo de la URL http://www.ejemplo.com/bla/ejemplo.html se diferencian dos resultados:
- Internet Explorer: Realiza una única petición al directorio en el que está alojada la página.
- Firefox, Safari y Chrome: Realizan una petición a la misma página que hace la petición.
- Opera: No hace nada.
El caso que nos preocupa sería el provocado por Firefox, Safari y Chrome, ya que al volver a cargar la página que está ejecutando la petición cargará otra nueva versión de la página que provocará el mismo problema al volver a ejecutar la petición de nuevo y así hasta que el servidor aguante. A mayor número de visitas mayor número de peticiones.
Este problema que parece muy concreto puede darse fácilmente con una construcción php tan simple como esta:
<img src="$imageUrl" >
Aunque Nicholas nos propone una solución en PHP que mediante htaccess
redirigimos todas las imágenes por una página PHP que comprueba que el referrer
sea diferente al de la página.
<?php
//Works for IE only when using path URLs and not file URLs
//get the referrer
$referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
//current URL (assuming HTTP and default port)
$url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
//make sure they're not the same
if ($referrer == $url){
exit;
}
?>
Esta solución, aunque no es muy apropiada ya que nos va a ejecutar este código por cada imagen que usemos en nuestra página, nos permite salir del paso mientras los navegadores se van actualizando, cosa que ya están haciendo.
- Firefox: Bug 531327
- WebKit (Safari/Chrome): Bug 30303
4 comentarios, 0 referencias
+
#