2009-02-10 39 views
10

Giả sử tôi có một ứng dụng ASP.NET chạy trên một số máy chủ web đằng sau một cân bằng tải:Phương pháp tốt nhất để buộc hết hạn bộ nhớ cache trong ASP.NET là gì?

Tôi có thể:

  • Force OutputCache (Page và/hoặc cấp Control) hết hạn trên toàn cầu?

  • Bộ đệm dữ liệu lực (ví dụ: Cache.Insert) hết hạn?

  • Giám sát việc sử dụng bộ nhớ đệm ASP.NET (khóa, RAM, v.v ...) từ vị trí trung tâm?

Một giải pháp có thể có là việc sử dụng bộ nhớ cache kiểm tra sự phụ thuộc của tệp đối với các thay đổi. Các tập tin có thể được xúc động mà sẽ hết hạn tất cả bộ nhớ cache. Tuy nhiên, điều này đòi hỏi các nhà phát triển phải bao gồm sự phụ thuộc trong tất cả các mã của họ. Là một giải pháp tốt hơn?

Trả lời

7

Có rất nhiều cách để làm cho các bộ nhớ đệm hết hạn, giống như trang OutputCache bởi

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache) 

phụ thuộc Time-based đơn giản là hết hạn mục tại một điểm được xác định trong thời gian.

Response.Cache.SetExpires(DateTime.Now.AddSeconds(360)); 
Response.Cache.SetCacheability(HttpCacheability.Private) 
Response.Cache.SetSlidingExpiration(true); 

Bây giờ khi nói đến bộ nhớ cache theo dõi, trừ khi có API trên bộ nhớ cache cho bạn biết, thì không có cách nào trực tiếp.

Bạn có thể liệt kê bộ nhớ cache, cặp khóa-giá trị và sau đó tính toán kích thước của từng mục được lưu trữ. Doesnt âm thanh dễ dàng phải không ??

Vì vậy, here's để dễ dàng theo dõi bộ nhớ cache của bạn. Thành thật mà nói tôi không bao giờ sử dụng nó bản thân mình, nhưng bạn có thể cho nó một thử, chỉ cần vấn đề thêm một dll vào ứng dụng của bạn.

Và đây là một cái gì đó cho các phím bộ nhớ cache của bạn xem,

' display contents of the ASP.NET Cache 
If Cache.Count > 0 Then  
    cc.Append("<b>Contents of the ASP.NET Cache (" _  
      & Cache.Count.ToString() & " items):</b><br />")  
    For Each item As Object In Cache  
    cc.Append("Key:'" & item.Key & "' Type:" _  
      & item.Value.GetType().ToString() & "<br />")  
    Next  
Else  
    cc.Append("<b>ASP.NET Cache is empty</b>")  
End If 
+0

Cảm ơn các liên kết đến bộ nhớ cache aspalliance giám đốc. Thật tuyệt vời. – frankadelic

0

Từ Tek-Tips (đọc liên kết cho giải thích chi tiết)

Response.Expires = 15 
Response.ExpiresAbsolute = Now() - 2 
Response.AddHeader "pragma","no-cache" 
Response.AddHeader "cache-control","private" 
Response.CacheControl = "private" 
Các vấn đề liên quan