2014-05-20 13 views
5

Tôi đang cố gắng lưu trữ một số biểu đồ đắt tiền của mình để tạo ra. Vì vậy, tôi đã làm điều này trong Web.config:ASP.NET OutputCache varyByParam không hoạt động trong Web.config

<caching> 
    <outputCacheSettings> 
     <outputCacheProfiles> 
      <!-- 4 hours : 60 sec x 60 min x 4 hour = 14400 sec --> 
      <add name="ChartCacheProfile" duration="14400" varyByParam="none" /> 
     </outputCacheProfiles> 
    </outputCacheSettings> 
</caching> 

Và tôi đã thêm này trong tôi Controller:

[OutputCache(CacheProfile="ChartCacheProfile")] 
public ActionResult GenerateChart() 

Nhưng điều này không làm việc ..., kết quả vẫn không được lưu trữ và Action đang được thực hiện luôn luôn. Quá trình này có thể mất tới 1 phút để hoàn thành.

Xin lưu ý rằng url được gọi với thông số khác nhau mỗi lần. Tham số không liên quan đến biểu đồ đang được tạo. Đó là lý do tại sao tôi đặt varyByParam="none".

+0

Bạn có ý nghĩa gì với 'Không hoạt động'? Các cuộc gọi đến Url được trả về từ Cache hoặc nhập Action? – haim770

+0

Khi bạn chỉ làm mới mà không thay đổi bất kỳ tham số nào, nhấn vẫn nhấn Action? – haim770

+0

Khi tôi làm mới mà không thay đổi tham số, nó không nhấn Action (nó là bộ nhớ đệm!). Khi tôi di chuyển 'varyByParam =" none "' sang 'Controller' thay vì' Web.config' thì cache hoạt động .. Tôi nghi ngờ đây là lỗi. –

Trả lời

5

Tôi nghi ngờ đó thực sự là một lỗi. Có gì làm việc cho tôi là để thiết lập một cách rõ ràng VaryByParam trong thuộc tính OutputCache:

[OutputCache(CacheProfile="ChartCacheProfile", VaryByParam="None")] 
public ActionResult GenerateChart() 
+4

https://github.com/aspnetwebstack/aspnetwebstack/blob/master/src/System.Web.Mvc/OutputCacheAttribute.cs#L23 có thể là lý do. – haim770

+0

Vì vậy, đây có phải là lỗi hoặc theo thiết kế không? –

+0

Khó nói ... – haim770

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