Tôi có một trang web nơi tôi lưu trữ rất nhiều thông tin. Tôi thấy thông tin xung đột xung quanh việc lưu trữ nội dung trong bộ nhớ cache asp.net.Cách hiệu quả nhất để lưu trữ/truy xuất các mục trong asp.net httpContext.Cache
Ví dụ cho phép nói rằng tôi có cấu trúc dữ liệu này:
Dictionary<string, List<Car>> mydictionary;
Tôi có thể lưu trữ toàn bộ điều với một phím chuỗi như "MyDictionary" và sau đó đi sâu một lần tôi rút ra khỏi đối tượng.
HttpContext.Cache.Add("MyDictionary",
mydictionary,
null,
Cache.NoAbsoluteExpiration,
new TimeSpan(10, 0, 0),
CacheItemPriority.Normal,
null);
var myDict = HttpContext.Cache["MyDictionary"] as Dictionary<string, List<Car>>;
Điều khác tôi có thể làm là chia nhỏ và lưu trữ từng mục trong từ điển riêng biệt trong bộ nhớ cache (dù bộ nhớ cache là từ điển).
Dictionary<string, List<Car>> mydictionary;
foreach (var item in mydictionary.Keys)
{
HttpContext.Cache.Add(item, mydictionary[item], null, Cache.NoAbsoluteExpiration, new TimeSpan(10, 0, 0), CacheItemPriority.Normal, null);
}
var myitem = "test";
var myDict = HttpContext.Cache[myItem] as List<Car>;
có ý nghĩa hiệu suất thể rất khác nhau (cho tôi đang giả định rằng tất cả mọi thứ trong bộ nhớ không?)
Hãy nhớ rằng bộ nhớ đệm có nghĩa là tiết kiệm chi phí tái tạo các đối tượng 'đắt tiền 'thường được sử dụng (tức là chi phí tái tạo vượt quá chi phí bộ nhớ đệm). Nếu bộ nhớ đệm đáng giá, hãy cho phép bộ nhớ cache áp dụng các quy tắc LRU để tối đa hóa hiệu suất. Đặt tất cả các mục vào một mục nhập bộ nhớ cache duy nhất ('MyDictionary') đánh bại LRU, và rủi ro bạn mất toàn bộ rất nhiều nên bộ nhớ cache quyết định rằng giữ MyDictionary là ít hiệu quả hơn so với giữ các mục khác. – Will