2010-05-21 43 views
8

Có phương pháp hay thứ gì đó để buộc hết hạn tất cả các mục trong bộ sưu tập Cache của HttpContext không?Buộc tất cả bộ nhớ cache ASP.NET hết hạn

+2

Khởi động lại máy chủ ASP.Net :) – Earlz

+0

Và điều gì sẽ xảy ra nếu chia sẻ lưu trữ? bạn không thể khởi động lại nó tôi tin? – Rushino

Trả lời

16

Hãy thử một cái gì đó như thế này:

var enumerator = HttpRuntime.Cache.GetEnumerator(); 
Dictionary<string, object> cacheItems = new Dictionary<string, object>(); 

while (enumerator.MoveNext()) 
    cacheItems.Add(enumerator.Key.ToString(), enumerator.Value); 

foreach (string key in cacheItems.Keys) 
    HttpRuntime.Cache.Remove(key); 
+0

Yup, tính năng này sẽ hoạt động. Tôi đã sử dụng cách tiếp cận này trước đây. – Pandincus

+1

Tại sao nên sử dụng Từ điển để giữ các mục trong bộ nhớ cache? Bạn chỉ cần giữ chìa khóa; nó sẽ có vẻ như một danh sách sẽ chăm sóc nó. –

+0

Điểm tốt. Tôi chỉ nghĩ rằng tôi cần phải giữ dữ liệu đó xung quanh bởi vì bạn sẽ không thể loại bỏ trong một cuộc điều tra trên điều tra viên. – Tejs

0

gì về việc cập nhật bộ nhớ cache hết hạn?

protected void btnClearCache_Click(object sender, EventArgs e) 
{ 

    var enumerator = HttpRuntime.Cache.GetEnumerator(); 

    while (enumerator.MoveNext()) 
     HttpRuntime.Cache.Insert(enumerator.Key.ToString(), enumerator.Value, 
      null, DateTime.Now , Cache.NoSlidingExpiration); 
} 
Các vấn đề liên quan