Foros del Web » Programando para Internet » PHP »

Ayuda: Admin. galería de imagenes.

Estas en el tema de Ayuda: Admin. galería de imagenes. en el foro de PHP en Foros del Web. Hola buenas noches !!! Tengo una galería de imágenes en el que las imágenes se llama 1.jpg, 2.jpg, 3.jpg, 4.jpg..... La cuestión es que cuando ...
  #1 (permalink)  
Antiguo 01/05/2006, 22:00
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Ayuda: Admin. galería de imagenes.

Hola buenas noches !!!

Tengo una galería de imágenes en el que las imágenes se llama 1.jpg, 2.jpg, 3.jpg, 4.jpg..... La cuestión es que cuando se elimina una imagen, se renombran las imagenes para guardar el orden numerico.

Tal es que si elimino 3.jpg, las imagenes que quedan son 1.jpg, 2.jpg y 3.jpg. en el caso de que hubiera 4.

Entonces, al eliminar la 3.jpg y recargar la página, se me muestran 3 fotos, pero en la 3.jpg se me muestra la anterior, es decir, se muestra la que está en caché. Entonces, tengo que ir al navegador, limpiar la caché y actualizar la página para ver los cambios.

El codigo que tengo, despues de eliminar la imagen y renombrar las otras imágenes es:
Código:
if ( !$objNegocio->EliminarImagen($_GET['idImagen']) ){
     die($objNegocio->errorNegocio);
}else{
     $objNegocio->GenerarXml('../xml/');
     header('Location: principalAdminBookModificar.php5?id='.$id);
}

Y arriba del todo de la página tengo siempre esto puesto:
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");

En teoría, al redireccionar con ese Header ya me debería de valer, creo, pero nada, se cargan las imágenes de la caché. Pensé en eliminarla con Javascript si se puede, claro.

Y sino...., haber si alguien puede ayudarme. Gracias.
__________________
Charlie.
  #2 (permalink)  
Antiguo 02/05/2006, 03:56
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
Por favor, realmente necesito solucionar el problema. Les agradecería infinitamente que me resuelvan el problema o me den ideas o algo, por favor.
__________________
Charlie.
  #3 (permalink)  
Antiguo 02/05/2006, 04:23
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
a mi me daba ese problema tambien y conseguí arreglarlo; prueba esto: al mostrar la imagen metele detras un ?timer()
ejemplo:
<?
echo "<img src='laimagen.jpg?".time()." ' border=0>"
?>

saludos
  #4 (permalink)  
Antiguo 02/05/2006, 07:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
En teoría, al redireccionar con ese Header ya me debería de valer, creo, pero nada, se cargan las imágenes de la caché. Pensé en eliminarla con Javascript si se puede, claro.
El control del caché sólo afecta a las "páginas" no a otro tipo de contenido como imagenes, css externos ... llamadas a javascript .. etc.

Con javascript no puedes controlar o borrar "caché" (sería un problema de seguridad grave si se permite)

Cita:
a mi me daba ese problema tambien y conseguí arreglarlo; prueba esto: al mostrar la imagen metele detras un ?timer()
ejemplo:
<?
echo "<img src='laimagen.jpg?".time()." ' border=0>"
?>
Es una solución .. pero hay que ver a que costos: Lo que se consigue es generar en la caché del navegador de turno una imagen nueva simpre .. por ende el en caché de ese PC/navegador van quedando innumerables copias de esa imagen. De hecho si el usuario no controla su caché (borrarlo periódicamente) tendrá los típicos problemas derivados de tener mucho archivo en su caché dando vuelta.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 02/05/2006, 07:19
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
Cita:
Es una solución .. pero hay que ver a que costos: Lo que se consigue es generar en la caché del navegador de turno una imagen nueva simpre .. por ende el en caché de ese PC/navegador van quedando innumerables copias de esa imagen. De hecho si el usuario no controla su caché (borrarlo periódicamente) tendrá los típicos problemas derivados de tener mucho archivo en su caché dando vuelta.
pero entonces para que vale esto:

Cita:
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");
no es para borrar la cache cuando se entra en la pagina o cuando se sale.. (no estoy seguro).. ??
(por lo cual me hago la siguiente pregunta... por que no funciona poniendo eso solo...?... misterios de la vida.. jajaja)

saludos..
  #6 (permalink)  
Antiguo 02/05/2006, 08:37
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 21 años, 5 meses
Puntos: 7
¿Puede ser tema del servidor que tenga algo por ahí extraño?, bueno, pregunto por preguntar por que no creo...

Es muy raro, elimino la imagen 3.jpg y al renombrar las otras y recargar la página me sigue mostrando la anterior 3.jpg, no la nueva y al eliminar la caché del cliente es cuando si se ven los cambios....

Voy a mostrarles más cosas del script, haber si aqui si ven algún error o algo que pueda ser la causa. Esta parte del script, esta dentro de un bucle que va mostrando cada imagen. Como verán, también tengo puesto lo de imagen.jpg?id='.random(1, 1000) para generar una nueva cada vez, pero ni aún asi . . . .

El código de muestra es el siguiente:
Código:
echo 	'<table>';
echo		'<tr>';
echo			'<td><img src="'.$urlImagenes.$nombreSeccion.'mini/'.$fila['numimagen'].'.jpg?id="'.rand(1, 1000).' alt="'.$fila['numimagen'].'" /></td>';
echo		'</tr>';
echo		'<tr>';
echo			'<td valign="top"><a href="principalAdminBookModificar.php5?accion=EliminarImagen&idImagen='.$fila['id'].'&id='.$_GET['id'].'" class="blanco">[ eliminar ]</a></td>';
echo		'</tr>';
echo	'</table>';
La verdad, espero qeu vean algo, por que es algo bastante molesto, cada vez que eliminamos una imagen, ZAS, hay que limpiar la caché para poder ver el orden verdadero.

En fin, saludos y gracias por todo.
__________________
Charlie.
  #7 (permalink)  
Antiguo 02/05/2006, 08:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por Azrael666
pero entonces para que vale esto:



no es para borrar la cache cuando se entra en la pagina o cuando se sale.. (no estoy seguro).. ??
(por lo cual me hago la siguiente pregunta... por que no funciona poniendo eso solo...?... misterios de la vida.. jajaja)

saludos..
Bueno .. así es el protocolo HTTP y como trabajan la "caché" los navegadores.

Si hay alguna cabecera más concreta para trabajar el caché de otro tipo de contenido fuera del "HTML" común de una página .. lo desconozco, pero NO es taréa de PHP en ese caso, tendrías que remitirte al protocolo HTTP, hacer pruebas en diferentes navegadores .. conocer sobre "caché" y como lo trabajan los navegadores .. etc.

Por cierto .. las cabeceras HTTP que se indican sólo "indican" al navegador o a un posible proxy por el que pase la conexión: "Esta página NO le hagas caché" .. no es que se "borre" el caché al cerrar la página o al entrar borre lo anterior. Sólo dice eso "no le hagas caché, trabaja todo "temporalmente" en "memoria".

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 14:43.