Foros del Web » Programando para Internet » PHP »

Tratamiento de imagenes PHP y caché.

Estas en el tema de Tratamiento de imagenes PHP y caché. en el foro de PHP en Foros del Web. Hola buenas noches, Tengo un script hecho en PHP que trata imágenes renombandolas a imagenes 1.jpg, 2.jpg, 3.jpg, etc... Bien, el problema que tengo es ...
  #1 (permalink)  
Antiguo 29/04/2006, 18:59
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Tratamiento de imagenes PHP y caché.

Hola buenas noches,

Tengo un script hecho en PHP que trata imágenes renombandolas a imagenes 1.jpg, 2.jpg, 3.jpg, etc...

Bien, el problema que tengo es el siguiente, cuando un usuario elimina por ejemplo la imagen 2.jpg, se renombran todos los ficheros para guardar un orden. 1.jpg, 2.jpg, 3.jpg .... etc.

Bien, esto me lo hace sin problemas, la cuestión es que de primeras, aparece la pantalla como una galería de imagenes con dichas imagenes y abajo de cada una un link para eliminarla. Al pulsar sobre este link, se recarga esta página, ejecutandose el script de eliminar la imagen.

Me elimina la imagen sin problema, pero al mostrar las imagenes, si antes había tres, y eliminamos una, nos muestra solo dos, evidentemente, pero si eliminamos la 2.jpg, nos muestra nuevamente la 2.jpg, no la 2.jpg recién renombrada, que antes era la 3.jpg.

Entonces, si voy al navegador, y elimino la caché y actualizo la página, entonces si, me muestra la verdadera imagen, pero de primeras me muestra la imagen anterior, la recién eliminada.

En fin, espero haberme explicado y que alguien me pueda ayudar con este pequeño problema. De mano decirles que agrego al script las siguientes cabeceras:
Código:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
Por favor, si alguien sabe por que puede ser, le estaría muy agradecido que me ayude.

Saludos y buenas noches.
__________________
Charlie.
  #2 (permalink)  
Antiguo 29/04/2006, 20:30
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Buenas,

puede ser que estés redireccionando con javascript, que en algunos casos genera esos problemas (digo en algunos casos, porque en ciertos proyectos me pasó, pero en otros, usando javascript, no me pasó...). Desde entonces, opté por redireccionar desde php. El código para hacerlo es muy simple:

Código PHP:
header("Location:la_url_de_destino.php"); 
El asunto es que estás escribiendo headers, o sea que para que funcione, no debe haber antes de esa línea ninguna salida -- nada de html ni espacios en blanco antes de abrir los tags de php (<?php o <?).

Si al seguir el enlace vas a un script distinto (el que hace las operaciones con los archivos) lo más probable es que se pueda adaptar fácilmente. Después de hacer todo el procedimiento, agregás el header de arriba para que redireccione y listo. No debería haber mayores inconvenientes.

Otra cosa que podrías probar sería pasarle un parámetro que siempre sea distinto al atributo "src" de los tags <img> (por ejemplo, un "timestamp", o sea, una referencia a la fecha actual en segundos). De esta manera, las imágenes no se quedarían "cacheadas" por el navegador, porque para el navegador siempre serían archivos distintos (el navegador "cachea" en base a una url completa; si cambian los parámetros, lo interpreta como un archivo distinto, no lo va a encontrar en el cache, y entonces va a pedirlo al servidor). Sería algo así:


Código PHP:
<?php
$fechaSegundos 
time();
$strNoCache "?nocache=$fechaSegundos";
?>
<img src="imagenTal.jpg<?= $strNoCache ?>">
<img src="imagenCual.jpg<?= $strNoCache ?>">
Dicho lo cual, te aclaro que no me parece lo más óptimo o recomendable (el caché existe por una buena razón, aunque a veces dé dolores de cabeza). Pero si lo demás no funciona, al menos será un parche, aunque va a aumentar la carga del servidor y va a hacer más lenta la navegación.

Otra observación: no conozco los detalles del script, pero en principio me parece una complicación innecesaria el renombrar las imágenes. Si tuvieras, pongamos, 100 imágenes, y eliminaras la primera, tendrías que renombrar 99 archivos, lo cual consume tiempo y recursos del servidor (y abre un flanco para que aparezcan errores difíciles de encontrar, sobre todo si el script no tiene un buen manejo de errores). No sé, en una de esas, hay una buena razón para usar ese método, pero a primera vista no me parece la mejor idea.

Suerte
Califa
  #3 (permalink)  
Antiguo 29/04/2006, 22:33
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Gracias amigo, voy a probar.

Y renombro las imagenes por que estoy usando un script de ActionScript, para una geleria de imagenes y como no sé modificarlo a mi gusto, pues...., de todas formas, como mucho habrá 20 o 30 fotos en cada seccion, asi que tampoco hay drama.

Voy a probar con la carga de ima´genes y pasanodle un aprametro, haber uqe pasa.

Gracias.
__________________
Charlie.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 00:23.