Apache-Cache, der Teilinhalt 206 Antworten auf Anforderungen für den vollständigen Inhalt bereitstellt


7

Wir führen Plone 3.3.6 hinter Apache 2.2.19 mit mod_cache aus. Wir haben kürzlich festgestellt, dass Apache die 206-Antwort auf eine Bereichsanforderung zwischenspeichert und diese Teilantwort dann bereitstellt, wenn eine Anforderung für die vollständige Ressource erfolgt.

Was scheint zu passieren:

  • Einige Clients stellen eine Bereichsanforderung für eine Ressource, die sich noch nicht im Cache befindet oder sich im Cache befindet, aber abgelaufen ist
  • Apache bedient die 206-Antwort korrekt
  • Ein anderer Client stellt einer Standardanforderung dieselbe Ressource
  • Apache liefert die gleiche Antwort an diesen zweiten Client: Es sollte die gesamte Antwort mit einer 200 bedienen

Dies führt gelegentlich zu Problemen mit unserem CSS auf einigen Websites

Ich kann dies konsistent replizieren: Ich habe ein kleines Python-Skript geschrieben, um eine Bereichsanfrage zu stellen.

Ich glaube nicht, dass wir mit unserer Apache-Konfiguration etwas Außergewöhnliches tun. Wir verwenden die Reverse-Proxy-Konfiguration, um Seiten von Plone aus bereitzustellen. Die für mod_cache relevante Apache-Konfiguration lautet wie folgt:

CacheEnable disk /
CacheDisable /static
CacheDisable /sitemap.xml.gz
CacheDisable /robots.txt
CacheIgnoreHeaders Set-Cookie

UseCanonicalName On

RequestHeader edit Accept-Encoding ^.*gzip.*$ gzip early
RequestHeader edit Accept-Encoding ^(?!gzip).*$ "" early

Das Apache-Caching-Handbuch enthält keine 206 Antworten in der Liste der Statuscodes, die die Antwort "haben muss", damit sie zwischengespeichert werden kann. Ist dies ein Fehler in Apache oder machen wir etwas falsch in der Konfiguration?

Antworten:


4

Dies ist der Apache-Fehler 49113 und wurde im Trunk behoben, jedoch nicht in 2.2.19.


Guter Fang - die Tests, die ich durchgeführt hatte, waren nicht mit Back-End-Inhalten, die mit einem Cache-Controloder einem ExpiresHeader antworteten , also habe ich die fehlerhafte Logikprüfung nicht bestanden.
Shane Madden

Wir haben Apache gepatcht und dies hat das Problem behoben. Ich hätte gedacht, dass diese Regression ernst genug ist, um daraus einen 2.2.x-Build zu machen, aber keine Anzeichen dafür
scarba05

Wurde dies in Ubuntu Lucids "apache2.2-bin 2.2.14-5ubuntu8.7" (3. November 2011) behoben? Kann keine Beweise in Changelogs finden ...
Henk

0

Dies ist in Apache 2.2.23 behoben. Aktualisieren Sie auf 2.2.23 und Sie müssen nicht patchen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.