7

używam następujący profil cache wyjściowa:Vary: * niepoprawnie dodawane do nagłówka odpowiedzi HTTP (asp.net mvc3)

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

W dev, mam nagłówka odpowiedzi z jednym Vary wpis:

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

Kiedy wdrożyć mojej aplikacji, mam dodatkowy Wary wpis włożonej w odpowiedzi:

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

Dlaczego ta dodatkowa Vary wpis? Zapobiega to poprawnej pracy pamięci podręcznej.

Wszelkie pomysły, jak to naprawić?

Odpowiedz

0

Czy próbowałeś ustawić varyByParam na None w swoim profilu/pliku konfiguracyjnym? Zobacz http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx.

Ponadto, tylko zgadywanie tutaj - czy plik konfiguracyjny różni się pomiędzy dev i "live", np. varyByParam może być ustawiony inaczej?

Uwaga: Właśnie dołączyłem do SO, więc nie mogę jeszcze dodawać komentarzy (co bym zrobił, zamiast zamieszczać to jako odpowiedź).

+0

Nie można ustawić varyByParam na Brak, spowoduje to nieprawidłowe wyniki. Nie the varyByParam jest ustawiony w taki sam sposób w dev i prod. Serwer jest inny; serwer dev vs IIS. – nakhli

0

Nagłówek Vary: Accept-Encoding wstawiany jest przez warstwę routingu AppHarbor. Nagłówek jest niezbędny do uzyskania dalszych serwerów proxy (zazwyczaj CDN, takich jak AWS CloudFront lub podobne), aby poprawnie buforować zarówno wersje gzip'owane, jak i inne niż gzip. To question has additional details.

Czy możesz szczegółowo opisać, w jaki sposób powoduje to problemy w Twojej aplikacji?

+0

Zmienna gwiazda jest wstawiana domyślnie, chyba że varyByParam = "" jest podana (zauważ, że varyByParam = "*" nadal generuje różną gwiazdkę) zobacz odpowiedź Atwooda tutaj: http://stackoverflow.com/a/486072/125804. Rozwiązałem problem. Opublikujemy obejście tutaj jako odpowiedź. – nakhli

Powiązane problemy