7

ich das folgende Ausgabe Cache Profil verwenden:Vary: * falsch hinzugefügt HTTP-Header-Antwort (asp.net MVC3)

<add name="MyFunkyProfile" duration="180" varyByParam="*" location="ServerAndClient" /> 

In dev habe ich einen Antwort-Header mit einem Eintrag Vary:

HTTP/1.1 200 OK 
Server: Microsoft-IIS/7.5 
... 
Vary: Accept-Encoding 
Cache-Control: private, max-age=180, s-maxage=0 
... 

Wenn ich meine App bereitstellen, ich habe einen zusätzlichen Eintrag in der Antwort eingefügt Vary:

HTTP/1.1 200 OK 
Server: nginx 
... 
Vary: Accept-Encoding 
Cache-Control: private, max-age=180, s-maxage=0 
... 
Vary: * 
... 

Warum dieser Eintrag zusätzliche Vary? Dies verhindert, dass der Cache korrekt funktioniert.

Irgendwelche Ideen, wie das zu beheben?

Antwort

0

Haben Sie versucht, varyByParam auf None in Ihrer Profil/Konfigurationsdatei zu setzen? Siehe http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx.

Erraten Sie auch hier - unterscheidet sich die Konfigurationsdatei zwischen Dev und 'Live', z. varyByParam kann anders eingestellt werden?

Hinweis: Ich bin soeben beigetreten, also kann ich noch keine Kommentare hinzufügen (was ich getan hätte, anstatt dies als Antwort zu posten).

+0

Kann varyByParam nicht auf None setzen, dies führt zu falschen Ergebnissen. Nein, der Parameter varyByParam wird in dev und prod auf die gleiche Weise gesetzt. Der Server ist jedoch anders; Dev-Server gegen IIS. – nakhli

0

Der Header Vary: Accept-Encoding wird von der AppHarbor-Routingschicht eingefügt. Der Header ist notwendig, um Downstream-Proxies (in der Regel ein CDN wie AWS CloudFront o.ä.) zu erhalten, um sowohl gzip-gepackte als auch nicht-gezippte Versionen Ihres Contents korrekt zu cachen. Dies question has additional details.

Können Sie angeben, wie dies zu Problemen für Ihre Anwendung führt?

+0

Variabler Stern wird standardmäßig vom Framework eingefügt, es sei denn, varyByParam = "" wurde angegeben (beachten Sie, dass varyByParam = "*" immer noch einen abweichenden Stern generiert) siehe Atwoods Antwort hier http://stackoverflow.com/a/486072/125804. Arbeitete um das Problem herum. Wird die Problemumgehung hier als Antwort veröffentlichen. – nakhli