2010-08-10 37 views
7

Tôi đang cố gắng đặt tính linh hoạt của tài nguyên ASP.NET. Vì vậy, nếu tôi goto/foo/show nó sẽ hiển thị một View cho một số tài nguyên, và cache này trong một vài giờ (ví dụ). Để làm điều này, tôi đang sử dụng thuộc tính OutputCache để trang trí phương thức hành động của tôi. Các chi tiết của bộ đệm ẩn này (đối với phương thức hành động này) được tìm thấy trong tệp web.config.Làm thế nào để thiết lập giá trị S-MaxAge CacheControl trong một ứng dụng ASP.NET?

Khi tôi đặt Bộ đệm đầu ra này, thiết lập chính xác là maxage value .. nhưng giá trị s-maxage là 0. WTF?

đây là mã ...

[Authorize] 
[OutputCache(CacheProfile = "SomeController_Show")] 
public ActionResult Show(){ ... } 

và đây là một đoạn trong tập tin cấu hình ..

<add name="SomeController_Show" duration="3600" varyByParam="authkey;format;blah" /> 

và một đoạn của phản ứng ...

Cache-Control:public, max-age=3576, **s-maxage=0** 
Content-Length:746 
Content-Type:application/json; charset=utf-8 
Date:Tue, 10 Aug 2010 00:42:17 GMT 
Expires:Tue, 10 Aug 2010 01:41:53 GMT 
Last-Modified:Tue, 10 Aug 2010 00:41:53 GMT 
Server:Microsoft-IIS/7.0 
Vary:* 

Chú ý mức tối đa được đặt chính xác như thế nào nhưng s-max là KHÔNG? ai đó có thể giúp tôi ở đây không?

Trả lời

12

Tôi đã tìm thấy câu trả lời, số [AuthorizeAttribute] xóa mọi mức tối đa bằng không. Điều này có nghĩa là, không có proxy cho mỗi kết quả xem bộ nhớ cache có Cấp phép.

Tôi đoán nội dung bộ nhớ cache proxy thông qua url .. do đó, nếu url không chứa bất kỳ chi tiết xác thực nào (thực sự không nên ... :)) .. thì làm cách nào để biết hai khác biệt yêu cầu là cho cùng một người hay không?

(Tôi đã thêm câu trả lời này thay vì xóa, để giúp các nhà phát triển khác có vấn đề này).

Ngoài ra, SIMILAR CÂU HỎI: Can someone explain this block of ASP.NET MVC code to me, please?

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