2012-06-22 33 views
5

Tôi đã phương pháp hành động sau đây:MVC3 OutputCache VaryByHeader = Cookie không được thiết lập

[HttpGet, Authorize, OutputCache(Duration = 60, VaryByHeader = "Cookie", Location = OutputCacheLocation.Any)] 
public ActionResult Index() 

Nhưng khi tôi thực hiện một yêu cầu, đó là những tiêu đề ban hành:

Cache-Control: private, max-age=60, s-maxage=0 
Content-Type: text/html; charset=utf-8 
Content-Encoding: gzip 
Expires: Fri, 22 Jun 2012 09:56:32 GMT 
Last-Modified: Fri, 22 Jun 2012 09:55:32 GMT 
Vary: Accept-Encoding 

Tại sao không phải là nó bao gồm tiêu đề Cookie trong Vary?

Tôi đã thử nhiều biến thể của OutputCache thiết lập nhưng không có kết quả :(

Trả lời

0

Vì vậy, câu trả lời là được bao gồm trong tên liên kết "tên tệp trang" của Andrew Bullock, còn gọi là "iis compression sẽ ghi đè lên tiêu đề khác",

Nhưng kể từ tháng 12 năm 2013, có sẵn hotfix (được tìm thấy trên liên kết Andrew Bullock). x có thể được bao gồm trong các bản vá lỗi thường xuyên, vì vậy hãy chắc chắn rằng bạn vẫn cần nó trước khi áp dụng nó.

Và vì nó là "thực hành tốt nhất" để cung cấp thông tin từ các liên kết thay vì chỉ cung cấp các liên kết (trong trường hợp trang đi xuống) một cách rõ ràng, đây là một bản tóm tắt:

IIS nén động ghi đè Vary tiêu đề. Điều này dường như áp dụng cho IIS từ phiên bản 5 đến phiên bản 8 bao gồm (khi tích lũy thông tin từ blog msdn và từ msdn kb). Vô hiệu hóa nén động IIS hoặc thử áp dụng hotfix sẵn có tại http://support.microsoft.com/kb/2877816/en-us nếu cần. (Vấn đề này có thể được sửa chữa bởi các bản vá lỗi thường xuyên trên các cửa sổ 8.1/2012 R2. Các hotfix có sẵn bắt đầu từ IIS 7, cá nhân thử nghiệm trên win7 sp1, chưa được trên máy chủ của tôi.)

Trong trường hợp cụ thể của tôi, tôi đã có cũng là một vấn đề khác: asp.net không phát ra bất kỳ tiêu đề Vary nào (đã bật nén hay không) với outputCachelocation được đặt thành Client. Đặt nó thành Downstream "đã giải quyết" vấn đề bổ sung này. Nhưng tất nhiên, điều này có tác dụng phụ của việc thay đổi Cache-Control từ private thành public. (Hiện có thể lưu vào bộ nhớ cache trên proxy thay vì chỉ trên trình duyệt của khách hàng.)

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