// veppel.net //

ie6 - cache-control und nicht gefundene daten

meine erkenntnis des tages:

manchmal will man per php files dem besucher nur unter gewissen bedingungen zur verfügung stellen. z.b. wenn ich ein file
/home/myaccount/test.pdf aufs internet stellen will, ohne es im http-baum zu platzieren. z.b. so:

$file = '/home/myaccount/test.pdf';

$f = fopen($file, 'r');

$data = fread($f,filesize($file);

und um es nun auszugeben, gibt man paar headers mit:

header('Content-Disposition: attachment; filename="test.pdf"');

header("Content-type: application/pdf";);

echo $data;

aber damit kanns ein ganz dolles problem geben. und zwar liefert php offensichtlich standardmässig als cache-control zeug wie no-cache mit. und wenn jemand ein eben solches file öffnen und in einem externen viewer anschauen will (z.b. acrobat), dann geht das mit firefox prima. bei IE kriegt man nur gemecker von wegen: no valid file found oder ähnlich.

offensichtlich speichert der IE das angewählte file nicht im cache, öffnet aber die helper application mit dem pfad für ein file im cache.

dem verhalten kann natürlich einfach einhalt geboten werden, indem man selbst die kontrolle über das caching übernimmt. einfach bei den header ausgaben noch folgende zeile einfügen:

header("Cache-Control: public, max-age=600, must-revalidate");

damit wird das file für 600 sekunden gecacht und kann von der helper application geöffnet werden ...

Kommentare

Guter Tip!
Danke,

you made my day ;)

invalid timestamp | Chris

Kommentare verfassen

name: -
e-mail: -
url: -
titel:* -
text:* -
  -
-