Mittag,
Da kommt dir die Praxis zugute: Die Clients sind tolerant im Empfang, eine Fallunterscheidung ist nicht notwendig. Die RFC 2068 sagt dazu:
" HTTP/1.1 clients SHOULD NOT send the Pragma request-header. HTTP/1.1
caches SHOULD treat "Pragma: no-cache" as if the client had sent
"Cache-Control: no-cache". No new Pragma directives will be defined
in HTTP."Und die Bedeutung von "SHOULD" wird erklärt als:
" SHOULD
This word or the adjective "recommended" means that there may
exist valid reasons in particular circumstances to ignore this
item, but the full implications should be understood and the case
carefully weighed before choosing a different course."
Ja gut, dass bezieht sich auf Pragma, aber es gibt ja auch noch für Cache-Control unterschiede für 1.0 und 1.1.
Des weiteren: Gibt es ein Expires-Datum, das besagt "läuft nie ab"?
Ja. Einfach keinen Expires-Header senden.
Puh jetzt weiß ich nicht, ob PHP einen sendet oder nicht. Weil dann würde ich gerne keinen senden.
Wo gibt es eine übersicht, was ich für Cache-Control und Pragma alles setzten kann?
Das steht in der HTTP-RFC 2068 aufgezählt drin. http://www.faqs.org/rfcs/rfc2068.html
Danke.
Ich habe irgenetwas gelesen, dass man das neue Abrufen mit einem 304 verhindern kann, wenn schon gecached ist?
Nein, das Abrufen kannst du nicht verhindern, denn das macht der Client ja gerade, um zu erfahren, ob es eine neuere Seitenversion gibt, oder nicht. Falls ja, lieferst du die normal aus (Status 200). Falls nein, schickst du Status 304 "Not modified".
Und woher weiß ich, ob sie modified im Vergleich zu der vom Client gecacheden Version ist?
Damit ein Client aber überhaupt nachfragen kann, benötigt die Seite zwingend mindestens eine Last-modified-Angabe. Ebenfalls gut wäre ein ETag. Erst dann kann der Client die erwünschten "Conditional-Requests" senden, in denen Header drinstehen, die bestimmen, welche Bedingungen vom Server für die Auslieferung beachtet werden müssen.
Ok Last-modified weiß ich bei jedem meiner Inhalte.
ETag?
Für die simpelste Anwendung bei Last-Modified sendet der Client "If-Modified-Since" plus Datum des früher empfangenen Last-Modified.
Heißt für mich ich sende last-modified und erhalte vom Client ein last-modified zum Vergleich. Dann schicke ich jenachdem 200 oder 304?
Gruß