跟踪链接缓存条目
MemoryCache 跟踪链接缓存条目,以便传播选项。 在以下示例中,为 child
添加的 expirationToken
也应用于 parent
:
using (var parent = cache.CreateEntry(key))
{
parent.SetValue(obj);
using (var child = cache.CreateEntry(key1))
{
child.SetValue(obj);
child.AddExpirationToken(expirationToken);
}
}
出于性能原因,默认情况下,.NET 7 不再跟踪链接缓存条目。 但可以使用新选项启用跟踪。
引入的版本
.NET 7
旧行为
在 .NET 7 之前,MemoryCache 会跟踪链接缓存条目以允许传播选项。 无法禁用跟踪。
新行为
从 .NET 7 开始,MemoryCache 默认情况下不会跟踪链接缓存条目。 添加了 MemoryCacheOptions.TrackLinkedCacheEntries 选项,以便你可以控制是否跟踪链接缓存条目。
中断性变更的类型
此项更改可能会影响二进制兼容性。
更改原因
引入此更改是为了提高性能。 在内部跟踪会使用 AsyncLocal<T>,这很昂贵,并会增加不小的开销。
建议的操作
如果希望 MemoryCache 继续跟踪链接缓存条目以便传播选项,请将 MemoryCacheOptions.TrackLinkedCacheEntries 设置为 true
。
var options = new MemoryCacheOptions
{
TrackLinkedCacheEntries = true
};
var cache = new MemoryCache(options);
受影响的 API
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈