gpt4 book ai didi

c# - 缓存 'Priority' 和 'AbsoluteExpiration' 是如何协同工作的?

转载 作者:太空狗 更新时间:2023-10-29 17:51:08 27 4
gpt4 key购买 nike

我发现自己进入了一个没有正确清理的CacheItem。在查看 MSDN 并纠正自己使用基于 Utc 的计算时,我发现了以下令人困惑的信息:

AbsolutExpiration 用于设置CacheItem 的“keep-alive”,Priority.NotRemovable 用于强制CacheItem 永远存在。没有关于哪个属性覆盖另一个的通知。

下面的代码进行编译,SQL Profiler 也确认数据库只被查询一次,而所有其他请求都来自缓存。

CacheItemPolicy _cachePolicy = new CacheItemPolicy() 
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddHours(6)),
Priority = CacheItemPriority.NotRemovable
};

我假设这段代码强制缓存项永久保留,但在创建 12 小时后被清除,这与 MSDN 关于该设置的说明一致。

"Cache implementations should set the NotRemovable priority for a cache entry only if the cache implementation provides ways to evict entries from the cache and to manage the number of cache entries"

那么另一方面,为什么这两个属性会一起工作呢?实现是否带来某种“更不可移动”?

最佳答案

所以根据this “NotRemovable”可防止缓存条目被自动删除(如缓存空间不足时),但会在其过期或您手动将其从缓存中取出时删除。

NotRemovable The cache items with this priority level will not be automatically deleted from the cache as the server frees system memory. However, items with this priority level are removed along with other items according to the item's absolute or sliding expiration time.

关于c# - 缓存 'Priority' 和 'AbsoluteExpiration' 是如何协同工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7926362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com