Frage

Ein HTTP-Server verwendet Content-Negotiation eine einzelne URL Identitäts- oder gzip-encoded auf der Client-Accept-Encoding Headers zu dienen.

Jetzt sagen wir einen Proxy-Cache wie Tintenfische zwischen Clients und dem httpd.

Wenn der Proxy beiden Kodierungen einer URL zwischengespeichert hat, wie funktioniert es festzustellen, welche zu dienen?

Die nicht-gzip-Instanz (nicht ursprünglich mit Vary serviert) kann auf jeden Client bedient werden, aber die codierten Instanzen (mit Vary: Accept-Encoding) nur mit dem identischen Accept-Encoding Header-Wert an einem Kunden gesendet werden, wie in der ursprünglichen Anforderung verwendet wurde .

z. Opera sendet "deflate, gzip, x-gzip, identity, *;q=0" aber IE8 sendet "gzip, deflate". Gemäß der Spezifikation, dann sollten Caches nicht inhalt codierten Caches zwischen den beiden Browsern teilen. Ist das wahr?

War es hilfreich?

Lösung

Zunächst einmal ist es meine Meinung nach falsch nicht „Vary: Accept-Encoding“ zu senden., Wenn das Unternehmen in der Tat variiert von diesem Header (oder deren Abwesenheit)

aber sagen, dass die Spezifikation zur Zeit in der Tat verweigert das die zwischengespeicherte Antwort auf Opera dient, weil die Vary-Header nicht gemäß den Definitionen überein a href in <= "http://greenbytes.de/tech/webdav/draft-ietf -httpbis-p6-Cache-06.html # rfc.section.2.6" rel = "noreferrer"> HTTPbis, Teil 6, Abschnitt 2.6 . Vielleicht ist dies ein Bereich, in dem wir die Anforderungen an Caches entspannen sollte (vielleicht möchten Sie auf der IETF HTTP-Mailingliste ...

UPDATE: stellt sich heraus, dass dies als eine offene Frage bereits markiert war; Ich habe ein Problem in unserem Issue Tracker hinzugefügt, um es finden Sie unter Ausgabe 147 .

Andere Tipps

Julian ist natürlich recht. Lektion:. Immer senden Vary: Accept-Encoding wenn Accept-Encoding Schnupfen, egal, was die Antwort Codierung

meine Frage zu beantworten, wenn Sie Vary aus versehentlich verlassen, wenn ein Proxy erhält eine nicht-codierte Antwort (ohne Vary), kann sie einfach zwischenzuspeichern und gibt diese für jede nachfolgende Anforderung (ohne Berücksichtigung Accept-Encoding). Squid tut dies .

Das große Problem bei Weglassen Vary ist, dass, wenn der Cache ohne eine codierte Variante erhält Vary dann kann es dies als Reaktion auf andere Anfragen senden, auch wenn ihr Accept-Encoding des Client zeigt an kann den Inhalt nicht verstehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top