Der Martin: PHP Anfrage als Bild beantworten

Beitrag lesen

Hallo,

Ich habe zwar wie man dem Link entnehmen kann einige Cache Header gesetzt, die greifen jedoch alle nicht, weshalb ich das Thema bitte von Grundauf besprechen würde. Deshalb die Annahme ich setze keinen Header außer den richtigen für das Bild. Bei einem Gif ist das:
header( "Content-type: image/gif" );

beim Request sind insgesamt drei Fälle zu unterscheiden: Der Client kann
a) die Ressource "ganz normal" anfordern, dann bekommt er sie im Erfolgsfall mit Status 200.
b) die Ressource "bedingt" anfordern, indem er den Header If-Modified-Since mit dem Timestamp der
   im Cache gespeicherten Ressource mitsendet; der Server antwortet dann reguär mit 200, wenn die
   vom Client angegebene Version "veraltet" ist, oder mit 304 und Content-Length 0, wenn er meint,
   dass die vom Client gecachte Version noch gültig ist.
c) die Ressource aus dem Cache holen, ohne überhaupt beim Server anzufragen - etwa weil der Cache-
   Header vom letzten Request gemeldet hat, dass diese Ressource noch lange gültig sein wird.

Da spielen also beide Seiten, Server und Client, eine wichtige Rolle. Der Server sollte dem Client die nötigen Angaben machen (Expires), damit der beim nächsten Request im Voraus entscheiden kann, und der Client muss, wenn er entsprechend konfiguriert ist, dem Server mitteilen, dass er die Ressource nicht zwangsläufig neu laden möchte. Im Opera kann man das unter Tools/Preferences/Advanced/History/Check documents bzw. .../Check images einstellen, im Firefox finde ich's gerade nicht (vermutlich wieder eine von den Einstellungen, die nur über about:config erreichbar sind).

So long,
 Martin

--
Der Professor sitzt beim Essen in der Mensa. Ein Student setzt sich ihm unaufgefordert gegenüber.
Professor: Seit wann essen denn Schwein und Adler an demselben Tisch?
Student:   Na gut, dann flieg' ich eben zum nächsten Tisch.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(