Foros del Web » Programando para Internet » PHP »

Cómo cachear páginas e imágenes

Estas en el tema de Cómo cachear páginas e imágenes en el foro de PHP en Foros del Web. Hola, estoy intentando hacer que mis imágenes generadas dinámicamente se cacheen. Para ello establezco la fecha de la última modificación, con: header("Last-Modified: $gmdate_mod"); Esto me ...
  #1 (permalink)  
Antiguo 18/02/2007, 06:57
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 0
Cómo cachear páginas e imágenes

Hola, estoy intentando hacer que mis imágenes generadas dinámicamente se cacheen. Para ello establezco la fecha de la última modificación, con:

header("Last-Modified: $gmdate_mod");

Esto me funciona cuando lo pongo antes de usar la sesión, con session_start(), etc., pero en cuanto hago algún tratamiento con la sesíón, el valor del header Last-Modifiied se queda vacío.

¿Alguien tiene idea de por qué sucede esto y si es compatible llevar la sesión -con cookies- y cachear las imágenes?

Gracias de antemano.
  #2 (permalink)  
Antiguo 18/02/2007, 08:25
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Re: Cómo cachear páginas e imágenes

Holas,

Como realizas el cacheo de tu php?, seria bueno que la pusieras aqui para ver donde esta el error.

Hay varias maneras de hacer un cacheo.

Saludos
Gildus
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 18/02/2007, 16:17
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Cómo cachear páginas e imágenes

La función que utilizo es esta. Si devuelve true, el fichero no lo genero.

function isCached($rFechaModificacion = null) {
$if_modified_since = preg_replace('/;.*$/', '', $HTTP_IF_MODIFIED_SINCE);

// obtengo la fecha de modificación
if ($rFechaModificacion) {
$mtime = strtotime($rFechaModificacion);
} else {
$fec = &New Fecha();
$mtime = strtotime($fec->now());
}
$gmdate_mod = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';

$if_modified_since; " . $HTTP_IF_MODIFIED_SINCE);

// si el navegador tiene una cacheada...
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$ims = preg_replace('/;.*$/', '', $HTTP_IF_MODIFIED_SINCE);
$ims_unix = strtotime($ims);
// comparo la fecha de la suya con la de la mia
if ($ims_unix == $mtime) {
// y si coinciden le digo que nada, que use la suya
header("HTTP/1.0 304 Not Modified");
return true;
}
} // si no tiene la imágen cacheada le digo la fecha de la mia

header("Last-Modified: $gmdate_mod");
return false;
} // De isCached

También he probado una página de prueba directamente y en cuanto uso el comando session_start() me deja de funcionar el cacheo de la página:

<?php // -*- sgml-parent-document: ("dummy.html" "html" "body" ()) -*-
session_start();

$if_modified_since = preg_replace('/;.*$/', '', $HTTP_IF_MODIFIED_SINCE);

$mtime = filemtime($SCRIPT_FILENAME);
$gmdate_mod = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';

if ($if_modified_since == $gmdate_mod) {
header("HTTP/1.0 304 Not Modified");
exit;
}
header("Last-Modified: $gmdate_mod");

if (isset($touch)) touch($SCRIPT_FILENAME);
$gmdate_now = gmdate('D, d M Y H:i:s') . ' GMT';
$now = time();

print "
<table>
<tr><td>if_modified_since</td><td>$if_modified_since</td></tr>
<tr><td>gmdate_mod</td><td>$gmdate_mod</td></tr>
<tr><td>gmdate_now</td><td>$gmdate_now</td></tr>
</table>
<p>
<a href=\"$SCRIPT_NAME\">Link to self</a>.<br>
<a href=\"$SCRIPT_NAME?touch=y&time=$now\">Update source file</a>.<br>
<a href=\"$SCRIPT_NAME?time=$now\">Link to self with varying URL</a>.
";

?>

Última edición por chiquitinto; 19/02/2007 a las 01:29
  #4 (permalink)  
Antiguo 19/02/2007, 01:31
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Cómo cachear páginas e imágenes

Cita:
Iniciado por gildus Ver Mensaje
Holas,

Como realizas el cacheo de tu php?, seria bueno que la pusieras aqui para ver donde esta el error.

Hay varias maneras de hacer un cacheo.

Saludos
Gildus
He puesto una página de prueba que puedes verificar directamente. Si quitas el sesion_start() funciona, si lo dejas, no cachea.

Un saludo.
Chiquitinto.
  #5 (permalink)  
Antiguo 20/02/2007, 16:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Cómo cachear páginas e imágenes

¿Alguien me puede ayudar? Es para cachear imágenes creadas dinámicamente y usar datos de sesión a la vez.
  #6 (permalink)  
Antiguo 26/02/2007, 15:18
 
Fecha de Ingreso: febrero-2007
Mensajes: 46
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Cómo cachear páginas e imágenes

Alguien tiene idea sobre esto.
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 20:42.