Foros del Web » Programando para Internet » PHP »

Necesito pagina no cacheable

Estas en el tema de Necesito pagina no cacheable en el foro de PHP en Foros del Web. Hola!! He medio resuelto un problemilla que tenía con la biblioteca gd pero ahora me encuentro con otro problema. Tengo una imagen que se va ...
  #1 (permalink)  
Antiguo 30/07/2004, 09:23
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 86
Antigüedad: 20 años, 9 meses
Puntos: 0
Necesito pagina no cacheable

Hola!!

He medio resuelto un problemilla que tenía con la biblioteca gd pero ahora me encuentro con otro problema.

Tengo una imagen que se va sobreescribiendo pero al mostrarla el navegador solo muesra la primera porque esta en caché. ¿tienen idea de como puedo evitar esto?¿hay forma de indicarle al servidor que la página sea no cacheable?

Gracias
__________________
"Quiero saber de todo.....y no se nada"
  #2 (permalink)  
Antiguo 30/07/2004, 09:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Las cabeceras típicas de "no caché" .. como por ejemplo estas:

Código PHP:
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// always modified
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
 
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);

// HTTP/1.0
header("Pragma: no-cache");
?>
www.php.net/header

no suelen dar buenos resultados para Imagenes (y otro tipo de archivos que llegan al cliente como los ".js" externos, css y demás).

Lo que se suele hacer en estos casos es generar un nombre de archivo de tu imagen "aleatorio" para que no sea igual a otro en "caché" y tu navegador entienda que ha de trabajar con la última y no las anteriores (bueno .. para el serán todas diferntes).

Puedes usar como "nombre aleatorio" .. un time() por ejemplo u otro código aleatorio:

Algo tipo ...
$nombre_archivo="miimagen_".time().".jpg";

Un saludo,

Última edición por Cluster; 30/07/2004 a las 09:53
  #3 (permalink)  
Antiguo 30/07/2004, 10:36
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 86
Antigüedad: 20 años, 9 meses
Puntos: 0
Muchas gracias Cluster, finalemente he tomado la opcion de dar nombre aleatorios. Sin embargo, ahora me encuentro con que mi carpeta imagenes\temp se va llenando de imagenes inservibles. He intentado borrarlas tras usarlas pero no funciona pues la borra antes de que la muestre. ¿como podría hacerlo de una manera eficaz tanto local como remotamente?
__________________
"Quiero saber de todo.....y no se nada"
  #4 (permalink)  
Antiguo 30/07/2004, 10:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
kaslimon ...

Tienes abierto otro mensaje donde expones el problema de fondo y el por qué has tenido que recurrir a esta solución "drástica" .. Si lo solventas de raiz (continua en tu mensaje anterior insistiendo y aportando lo que se te solicita) tal vez resuelvas el problema de raiz y no haciendo "parches" como este.

De todas formas .. si insistes en este método ..

Las imagenes en el -servidor- si hay una rutina que las genera ante un cambio (un nuevo voto .. etc).. habrá que borrar la imagen existente y crear la nueva .. La pregunta es: ¿"como sabes que nombre tiene esa imagen si es aleatorio"? .. Podrías usar cierto pre-fijo para la imagen como para leer el directorio donde las almacenes en busca de toda imagen con ese nombre que contenga tu pre-fijo (algo_98789798678) (en teoría siempre tendría que dar como resultado que encontró un archivo).

Y .. con respecto a las que almacena el -cliente- (tu navegador) ahí no hay nada que hacer .. PHP ni javascript tiene acceso a ese nivel para "borrarlas" (sería altamente peligroso por seguridad .. mas nos vale que no se pueda hacer ~#)

Así que insisto .. que la solución es atacar el problema de raiz (por qué se puede solventar).

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:29.