7

Tôi đang sử dụng hồ sơ output cache sau:Vary: * sai thêm vào phản ứng tiêu đề http (asp.net MVC3)

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

Trong dev, tôi có một tiêu đề phản ứng với một Vary nhập:

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

Khi tôi triển khai ứng dụng của tôi, tôi có thêm một Vary entry lắp vào phản ứng:

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

tại sao điều này thêm Vary nhập? Điều này ngăn bộ nhớ cache hoạt động chính xác.

Bất kỳ ý tưởng nào về cách sửa lỗi này?

Trả lời

0

Bạn đã thử đặt varyByParam thành None trong hồ sơ/tệp cấu hình của mình chưa? Xem http://msdn.microsoft.com/en-us/library/hdxfb6cy.aspx.

Ngoài ra, chỉ cần đoán ở đây - tệp cấu hình khác nhau giữa dev và 'live', ví dụ: varyByParam có thể được đặt khác nhau không?

Lưu ý: Tôi vừa mới tham gia SO nên không thể thêm bình luận (mà tôi đã thực hiện thay vì đăng bài này dưới dạng trả lời).

+0

Không thể đặt khác biệtByParam thành Không, điều này sẽ mang lại kết quả sai. Không có biến thểByParam nào được đặt theo cùng cách trong dev và prod. Máy chủ là khác nhau mặc dù; dev server vs IIS. – nakhli

0

Tiêu đề Vary: Accept-Encoding được chèn bởi lớp định tuyến AppHarbor. Tiêu đề là cần thiết để có được proxy hạ lưu (thường là CDN như AWS CloudFront hoặc tương tự) để lưu trữ chính xác cả phiên bản gzip'ed và non-gzip'ed của nội dung của bạn. Đây là question has additional details.

Bạn có thể nêu chi tiết cách điều này gây ra sự cố cho ứng dụng của bạn không?

+0

Sao Vary được chèn bởi khung theo mặc định trừ khi differByParam = "" được chỉ định (thông báo rằng biếnByParam = "*" vẫn tạo ra các sao khác nhau) xem câu trả lời của Atwood tại đây http://stackoverflow.com/a/486072/125804. Làm việc xung quanh vấn đề. Sẽ đăng cách giải quyết ở đây dưới dạng câu trả lời. – nakhli

Các vấn đề liên quan