Foros del Web » Programando para Internet » PHP »

Forzar la caché de imagenes

Estas en el tema de Forzar la caché de imagenes en el foro de PHP en Foros del Web. Hola a todos/as: Vereis, acabo de terminar una pagina en la que un PHP, genera las fottitos en miniatura del contenido de una carpeta y ...
  #1 (permalink)  
Antiguo 31/01/2003, 06:14
Avatar de Trebol-a  
Fecha de Ingreso: enero-2003
Ubicación: Cartagena, España
Mensajes: 44
Antigüedad: 14 años, 11 meses
Puntos: 0
Forzar la caché de imagenes

Hola a todos/as:

Vereis, acabo de terminar una pagina en la que un PHP, genera las fottitos en miniatura del contenido de una carpeta y las muestra en un tabla.... todo correcto y perfecto funcionamiento
El problema es que no las guardá en caché. Se entiende que puesto que las imagenes son generadas cada vez que se entra a dicha pagina pues no hay caché que valga, con lo cual bueno, me dá miedo que cuando el numero de fotos sea realmente alto el proceso de abrir el album de fotos en miniatura pueda alargarse bastante, porque hay que esperar que se generen las imagenes.

La pregunta es: ?¿ Habria alguna manera de FORZAR, obligar al navegador a almacenar dichas fotos de alguna manera?¿
o bien ¿? se os ocurre algun sistema alternativo que sea mas "eficaz".
El inconveniente ya lo sabeis, la ventaja de este sistema es que por lo menos no va a ocurrir lo que en otros sitios en que si se actualiza la foto, no se vé porque está "cacheada".

Espero sugerencias, gracias!
  #2 (permalink)  
Antiguo 31/01/2003, 07:02
Avatar de BVis  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 15 años
Puntos: 0
Lo que deberías intentar es crear las miniaturas guardandolas en un archivo, de tal modo que solo se creen una vez. Si las creas al vuelo, harás que cada vez se deban de crear, por lo que todo irá mucho más lento.

Una posibilidad es detectar si existe la miniatura asociada a la imagen, si existe, no la creas y usas la que ya está.

1 Saludo.
__________________
"Yo opino lo mismo que BVis, el de 'forosdelweb' " - Bill Gates
  #3 (permalink)  
Antiguo 31/01/2003, 07:53
Avatar de Trebol-a  
Fecha de Ingreso: enero-2003
Ubicación: Cartagena, España
Mensajes: 44
Antigüedad: 14 años, 11 meses
Puntos: 0
Gracias, algo así habia pensado, no se me ocurre otra manera, pero lo preguntaba por si habia alguna manera de no guardandolas fisicamente si lo haga la caché. El problema es que las imagenes "grandes" son renombradas y cambiadas constantemente, entonces se me antoja un autentico caos, intentar mantener relacionadas Grande->miniatura.

Vaya, ya ingeniaré algo. Gracias again!
  #4 (permalink)  
Antiguo 31/01/2003, 07:56
Avatar de Trebol-a  
Fecha de Ingreso: enero-2003
Ubicación: Cartagena, España
Mensajes: 44
Antigüedad: 14 años, 11 meses
Puntos: 0
Alguien me ha pedido el codigo del php que crea las miniaturas, y cuando se lo estaba enviando, he creido que quizas a alguien mas le pueda servir lo que yo hice. Asi que aqui va la explicacion:
----------------------------------------------------------------------------------
Tengo un php, llamado foto.php que lo que hace es "devolver" una imagen miniatura cuando se le llama. ok?¿
Se le llama de la siguiente manera desde cualquier php o html:

<img src=foto.php?origen=$fichero border="0">

Llamas a foto.php pasandole la variable "origen", que este caso es igual a variable fichero. Tambien valdría la siguiente:

<img src=foto.php?origen="fotogrande.jpg" border=\"0\">

El php foto.php te devuelve la imagen a 120 pixel de ancho. El alto viene dado por las proporciones de la imagen original. El "foto.php" es asi:

<?php
$origen = $dir.$origen; // aqui ademas de la foto original le pasamo el directorio donde se encuentra ya que en mi pagina trabaja con varios directorios o carpetas

$imagen1 = imagecreatefromjpeg("$origen") or die("no existe esa imagen");

$porcentaje = ImageSX($imagen1)/120;
$nx = 120;
$ny = ImageSY($imagen1)/$porcentaje;
$imagen2 = ImageCreate($nx, $ny); //creamos una imagen de 120 px de ancho y el % equivalente en alto

// y copiamos la imagen original a la nueva creada, reescalandola.

imagecopyresized($imagen2, $imagen1, 0, 0, 0, 0, $nx, $ny, ImageSX($imagen1), ImageSY($imagen1));

// aqui devolvemos la imagen en formato PNG y destruimos.

header("Content-type: image/png");
imagepng($imagen2);
imagedestroy($imagen2);
imagedestroy($imagen1);
?>

---------------------------

Pos listo, si ha alguien le sirve que lo disfrute con salud !!
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:29.