He pasado mi fin de semana programando una pequeña broma de April Fool, pero todavía no funciona como quiero.Caché molesto del navegador de April Fool se niega a vaciar
Tengo un sitio web basado en Drupal 6 en el que quiero cambiar lo menos posible. La idea es que todas las imágenes que se sirven desde el directorio/files se redirijan a un servidor web externo (myserver) que voltea la imagen boca abajo y luego la muestra en el navegador.
que el sitio web de Drupal (servidor_destino) redirigir todas las peticiones de imágenes a otro servidor, He creado un .htaccess de la siguiente manera:
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_USER_AGENT} !^aprilFool$
RewriteRule ^(.*)$ http://myserver/aprilFool/?url=http://targetserver/files/$1 [R=302,L]
Y hasta ahora funciona muy bien! Cuando habilito todo, el truco de April Fool cambia algunas de las imágenes y se muestran en el navegador del cliente.
Pero cuando desactivo la @targetserver .htaccess, el navegador niega a darse cuenta de que sólo estaba destinado a ser una broma temporal y olvidar las imágenes editadas :(
que aquí hay una sniplet del script Perl en miservidor/aprilfool:
my $ua = LWP::UserAgent->new;
# Identify ourselves through the useragent, to prevent endless redirect loops
$ua->agent('aprilFool');
# Load remote file
my $response = $ua->get($url);
if ($response->is_error) { die "Cannot retrieve document $url\n"; }
my $imageData = $response->content;
# Determine the file's mime type, need that to determine if we want to change it or not
my $ft = File::Type->new();
my $format = $ft->mime_type($imageData);
# If the file is an image, flip it
if ($format =~ m/^image\//) {
my $image=Image::Magick->new;
$image->BlobToImage($imageData);
$image->Flip();
$imageData = $image->ImageToBlob();
}
# Send HTTP headers
print "Content-type:$format\r\n";
print "\r\n";
print $imageData;
he intentado lo siguiente sin éxito:
- Añadir una cabecera adicional en el guión: print "Cache-control: max-age = 36 \ r \ norte";
- añadir una línea en @targetserver .htaccess: Conjunto de la cabecera Expira "Dom Sep 12 15:45:00 CET 2012"
- Cambiar el nombre para imagen.jpg de varias maneras TMP-imagen.jpg, imagen. jpg.tmp cambiando el RewriteRule en .htaccess @myserver
Pero después de desactivar el .htaccess la servidor_destino sigue enviando 304 => 'sin modificar' hasta que me sonrojo manualmente la caché del navegador.
Así que mi pregunta es: ¿cómo puedo hacer que el 1 de abril dure solo un día, preferiblemente hasta la medianoche ... ¿Cómo puedo hacer que el navegador se dé cuenta de que tiene que volver a cargar la imagen original una vez que la broma terminó?
No te refieres 'Lun Mar 12 2012 15:45:00 CET'. ver http://blog.ellisons.org.uk/article-58 para una discusión de los valores predeterminados. No son lo que cabría esperar :-) – TerryE
Intentó el encabezado Expira con el formato de hora correcto, pero parece que tampoco funciona. – jippie
Por otro lado, encontré acerca de: cache? Device = disk en Firefox, que básicamente muestra todos los archivos en caché y su fecha/hora de caducidad. Esto demostró que el encabezado * de Cache-Control está funcionando. Para que Firefox expire la imagen, se requiere que use una pestaña nueva/limpia. – jippie