Foros del Web » Programando para Internet » PHP »

Imagenes en Cache ¿Cómo?

Estas en el tema de Imagenes en Cache ¿Cómo? en el foro de PHP en Foros del Web. Hola a todos. Tengo la siguiente duda: En el sitio que estoy desarrollando hay viarias paginas. Tengo varias imagenes que se repiten en cada pagina ...
  #1 (permalink)  
Antiguo 25/04/2007, 10:13
 
Fecha de Ingreso: octubre-2006
Ubicación: México D.F
Mensajes: 210
Antigüedad: 18 años
Puntos: 0
Imagenes en Cache ¿Cómo?

Hola a todos.

Tengo la siguiente duda:

En el sitio que estoy desarrollando hay viarias paginas. Tengo varias imagenes que se repiten en cada pagina y que son siempre las mismas, pero en algunas secciones de cada pagina tengo imagenes (gif) que indican el status de un proceso... estas pueden cambiar en cualquier momento.

He notado que al cargar mis paginas es un poco lento debido a la carga de imagenes pues estas no se quedan en cache....

¿Qué tengo que hacer para que las imagenes se queden en el cache del navegador para que al volver a recargar la pagina no se tengan que recargar?

Pero tambien debo asegurarme que ciertas imagenes no se queden en el cache pues dependen de un status en mi base de datos.

En cada pagina tengo el siguiente codigo de headers:
Código PHP:
if (version_compare(PHP_VERSION'5.1.0''>='))
    
date_default_timezone_set('America/Mexico_City');

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 entiendo mucho de eso...

Espero me puedan ayudar a optimizar el tiempo de carga de mis paginas.

Nota: Se debe considerar que gran cantidad de elementos se muestran por el resultado de una lectura a base de datos.

Un saludo
  #2 (permalink)  
Antiguo 25/04/2007, 10:41
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Imagenes en Cache ¿Cómo?

Código PHP:
header('Cache-Control: no-store, no-cache, must-revalidate'); 
Creo q con esa línea es con la q estás evitando q tu página se guarde en la cahé del navegador. Prueba a comentarla (//) y ver qué pasa.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #3 (permalink)  
Antiguo 25/04/2007, 11:23
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 17 años, 6 meses
Puntos: 4
Re: Imagenes en Cache ¿Cómo?

header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');

Comentalas, no te sirven para guardar cache.
  #4 (permalink)  
Antiguo 25/04/2007, 11:42
 
Fecha de Ingreso: octubre-2006
Ubicación: México D.F
Mensajes: 210
Antigüedad: 18 años
Puntos: 0
Re: Imagenes en Cache ¿Cómo?

Ok, pero que pasará con las imágenes que no quiero que se guarden en cache?

La idea es que cierto contenido que se genera de manera dinamica no debe guardarse en cache.

Por ejemplo...

En la pantalla login.php no hay problema con el guardado en cache, pero la siguiente que se llama principal.php contiene muchas imagenes que no quiero que se guarden en cache pues cambien dinamicamente.

Espero que me haya explicado con claridad.

Un saludo
  #5 (permalink)  
Antiguo 25/04/2007, 18:49
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 11 meses
Puntos: 11
Re: Imagenes en Cache ¿Cómo?

Hola amigo, cuando cites una imagen que no quieres que se guarde en cache hazlo asi:

... src="../ruta/imagen.jpg?ran=<? rand(100,1000) ?>" >

De esta manera jamás se gusrdará tu imagen en la cache del navegador.

Espero tus novedades.
Suerte
  #6 (permalink)  
Antiguo 25/04/2007, 19:52
 
Fecha de Ingreso: octubre-2006
Ubicación: México D.F
Mensajes: 210
Antigüedad: 18 años
Puntos: 0
Re: Imagenes en Cache ¿Cómo?

Ok

Gracias por su ayuda....


Probando...
  #7 (permalink)  
Antiguo 30/04/2007, 15:38
 
Fecha de Ingreso: octubre-2006
Ubicación: México D.F
Mensajes: 210
Antigüedad: 18 años
Puntos: 0
Re: Imagenes en Cache ¿Cómo?

Hola de nuevo ...

Estoy hecho un gran lío por lo del cache y las imagenes.

Me explico:

Mas arriba explico que tengo un sitio que contiene multiples paginas... en cada pagina hay muchas imagenes que se repiten todo el tiempo (menus, logos, divs con estilo, etc.), utilizando firefox me di cuenta de que siempre se recargaba todo el contenido de la pagina. En Herramientas/informacion de la pagina, sale una ventana y en la pestaña Medios se puede ver si las imagenes se quedan o no en el cache.

Pues bien, en un principio este era mi codigo en cada pagina:

Código PHP:
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'); 
Lo he cambiado por esto:
Código PHP:
header("Cache-Control: Public");
    
header("Expires: Mon, 26 Jul 2008 05:00:00 GMT"); 
Vuelvo a revisar y sí... la imagenes ya se quedan en el caché. Pero esto es en mi PC de desarrollo, (Win XP, apache, etc, etc...) quise (para no regarla) modificar las dos primeras paginas del sitio productivo (Servidor dell, Linux, mucha Ram, etc, etc...) pero al probar incluso desde la red local, las imagenes siguen sin quedarse en el cache del navegador....

Regreso a mi Pc de desarrollo y ya no se que hacer....

Me queda claro el codigo para evitar que ciertas imagenes se cacheen.... peroooo

¿Que debo hacer en cada pagina para que se quede en el caché?

O donde puedo buscar más información sobre el uso del cahche???


Un saludo y gracias por responder.
  #8 (permalink)  
Antiguo 30/04/2007, 22:39
 
Fecha de Ingreso: octubre-2006
Ubicación: México D.F
Mensajes: 210
Antigüedad: 18 años
Puntos: 0
Re: Imagenes en Cache ¿Cómo?

Leo y leo y cada vez me confundo mas....

Comento algo mas sobre mis paginas....

La mayor parte de ellas son dinamicas, dependen absolutamente de consultas a la base de datos y los cambios son muy vertiginosos...

Regularmente uso una pagina de "esqueleto" donde pongo todas mis imagenes que "esas si" se repiten siempre, luego tengo uno o dos DIV's donde pongo el contenido dinamico (la consulta a la base de datos) esto mediante AJAX....

Entre algunas de las paginas se generan formularios dinamicos (tambien) sobre datos dinamicos..... imaginen un repartidor de pedidos que visita una pagina donde puede ver todo el detalle de pedidos (de 1 a n) de la zona que le tocar recorrer... cuando entre al sitio debe cambiar el status de cada pedido para saber si ya fue entregado al cliente final o no....

Todo esto de manera tradicional seria la locura (imaginen cambiar datos un pedido -de varios cientos-, enviar la pagina al servidor, guardar el cambio y volver a mostrar el resto de los pedidos) .... ni pensarlo.

Entonces lo resuelvo favorablemente con AJAX, cada cambio se envia de manera asincrona y sigo viendo el resto de los pedidos sin tener que recargar constantemente....


Ok.... esto todo bien.... pero vuelvo al tema de las imagenes, utilizo muchas imagenes pequenas para adornar la GUI, iconos que muestran estatus de algun proceso, pequenos degradados para adornar mis contenedores DIV, fondos, menus, etc, etc.... todo esto no deberia recargarse pues siempres es lo mismo.


Alguna orientacion?????


Agradecere todo tipo de ayuda... que me sirva para alararme todo este embrollo

Saludos
  #9 (permalink)  
Antiguo 01/05/2007, 21:54
 
Fecha de Ingreso: octubre-2006
Ubicación: México D.F
Mensajes: 210
Antigüedad: 18 años
Puntos: 0
Re: Imagenes en Cache ¿Cómo?

Nadie??

He buscado multitud de paginas que hagan operaciones con bases de datos.... como este y otros foros, y veo que sus imagenes las tengo cacheadas en mi navegador lo que hace que se cargue rapidamente, sin embargo so contenido siempre es nuevo...

Si alguien me puede dar una mano se lo voy a agadecer... no me gusta la idea de que mis paginas sea muy lentas.... aun con mi conexion de 1 Mb tardo en accesar a las paginas.

Un dato curioso: En las paginas donde muestro tablas con datos, estos se pintan mucho antes de que se cargue completamente el aspecto de la pagina.

Descartado... el acceso a datos no tiene nada que ver.

Un saludo
  #10 (permalink)  
Antiguo 01/05/2007, 22:38
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Re: Imagenes en Cache ¿Cómo?

Las imágenes siempre se cachearán a menos que uses el truco de agregarle un valor aleatorio en su atributo src, de manera que para las que querés que no se guarden, usás ese truco, para el resto, nada. Para los datos, si tu página es dinámica, conviene que uses las cabeceras no caché como estas, las cuales no afectan a las imágenes pero sí a los datos:
Código PHP:
<?php 
header
("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// siempre modificado
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");
?>
Por otro lado, si tenés consultas a la bd que son repetitivas, también podés crear un sistema de caché personalizado para esos casos:
http://www.programacion.net/php/articulo/gueb_cache/
  #11 (permalink)  
Antiguo 01/05/2007, 22:54
 
Fecha de Ingreso: octubre-2006
Ubicación: México D.F
Mensajes: 210
Antigüedad: 18 años
Puntos: 0
Re: Imagenes en Cache ¿Cómo?

Ok. muchas gracias por responder.

Voy comprendiendo. Hago lo que me dices y en mi maquina de desarrollo funciona bien. Firefox en la opcion "Informacion de la pagina" me dice que el origen de las imagenes es "Cache en disco".

Sin embargo esto mismo no funciona o no tiene el mismo efecto cuando me conecto al servidor productivo. Fedore + apache 2, PHP 5 y MySql 5

La configuracion del servidor tiene algo que ver...???

O por que solo funciona en mi PC (Win Xp, Apache 2, PHP 5)

Gracias por la info y por el apoyo
  #12 (permalink)  
Antiguo 01/05/2007, 23:47
 
Fecha de Ingreso: octubre-2006
Ubicación: México D.F
Mensajes: 210
Antigüedad: 18 años
Puntos: 0
Re: Imagenes en Cache ¿Cómo?

Rayos !!!!


Creo que se debe a que el servidor usa SSL.

Alguien sabe de esto??

Sigo investigando
  #13 (permalink)  
Antiguo 02/05/2007, 20:36
 
Fecha de Ingreso: octubre-2006
Ubicación: México D.F
Mensajes: 210
Antigüedad: 18 años
Puntos: 0
Re: Imagenes en Cache ¿Cómo?

Efectivamente.... Una de las funciondes de los certificados SSL es que -por seguridad- no permiten cachear el contenido de las paginas.

Si alguien conoce la forma de evitar esto con las imagenes por lo menos se lo voy a agradecer mucho.

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:20.