Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/04/2006, 03:48
Avatar de uamistad
uamistad
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Tu documento debe incluir la cabecera header("Last-Modified: fecha-formato-correcto");

Así el navegador sabe cuál fue la fecha de última modificación.

Cuando se le pide nuevamente el documento, el explorador ya tiene el doc y le envía al server la fecha que tiene (tú puedes ver esa fecha en el server mediante la variable $_SERVER['HTTP-IF-MODIFIED-SINCE'], sólo te la enviará, obviamente, si el documento ya está previamente en el navegador.

Mediante esa variable, tú debes decidir si esa fecha corresponde o no al PDF actualizado que debe ver. Si es la misma, le regresas un header("HTTP/1.1 304 Not changed"); y el navegador sabrá que la copia que posee está vigente aún. De lo contrario, lo generas y lo envías nuevamente.

A esto añadirle que tienes que enviarle un header("Content-Type: no-cache, must-revalidate") para que nunca cachee, sino más bien que SIEMPRE le envíe al servidor la fecha de última modificación que tiene y ya el servidor decidirá (tú lo tienes qeu decidir) si le envia otro PDF generado al vuelo o bien, un código 304 para hacerle saber que el doc. que el naveg. contiene está bueno todavía.

Si no quieres complicarte, genera uno siempre. Incluye un header("Content-Type: no-store, must-revalidate"); ya que no-store es muy estricto y no permite que se cacheen los documentos en el destino.
No importa si no envías una cabecera Expires, es redundante hacerlo, aunque algunos servidores la envían por default. Yo lo quito con session_set_limiter("privated_no_expires"); de la anterior función, checa la sintaxis, ya que no recuerdo bien si ese parámetro va así.

Bueno, saludos !
__________________
"Di no al Internet Explorer" -Proverbio Chino-