Tôi đang nhầm lẫn về thuộc tính AbsoluteExpiration trên CacheItemPolicy.Hết hạn mục được lưu trong bộ nhớ cache qua CacheItemPolicy trong .NET MemoryCache
The MSDN documentation for it nói "Khoảng thời gian phải vượt qua trước khi mục nhập bộ nhớ cache bị xóa." Nó sử dụng một System.DateTimeOffset để xác định "khoảng thời gian".
Nhưng nếu bạn nhìn vào DateTimeOffset's MSDN documentation, nó nói rằng "đại diện cho một điểm trong thời gian ... liên quan đến Giờ quốc tế phối hợp (UTC)". Tham khảo cũng StackOverflow thread này.
Bạn có thấy sự cố không? AbsoluteExpiration mong đợi một "khoảng thời gian" (như 5 giây hoặc 2 giờ), nhưng nó đòi hỏi một đối tượng đại diện cho một "điểm trong thời gian" (như ngày 21 tháng 12 năm 2012, 06:14:00 EST).
Trong mã bên dưới, tôi xác định một chính sách cho tất cả các mục. Tôi muốn mọi mục hết hạn sau cacheExpiryInSeconds
giây sau khi chúng được thêm vào. Ai đó có thể xác minh rằng tôi đang làm điều này một cách chính xác?
public class MyCache : IRoutingInfoCache
{
MemoryCache _routingInfoCache;
CacheItemPolicy _cachePolicy;
public MyCache(int cacheExpiryInSeconds)
{
_routingInfoCache = new MemoryCache("myCache");
_cachePolicy = new CacheItemPolicy() {
AbsoluteExpiration =
new DateTimeOffset(
DateTime.UtcNow.AddSeconds(cacheExpiryInSeconds))
};
}
public void Put(string key, object cacheItem)
{
// based on how I constructed _cachePolicy, will this item expire
// in cacheExpiryInSeconds seconds?
_routingInfoCache.Add(new CacheItem(key, cacheItem), _cachePolicy);
}
}
bạn đã nhận được 30 giây ở đâu? –
Đó là một sai lầm. Đã chỉnh sửa. – Haney
Tuy nhiên, nếu tôi tạo chính sách bộ nhớ cache (sử dụng mã ở trên)/mỗi lần/tôi thêm một mục thì nó sẽ hoạt động như mong đợi, đúng không? –