Seguimiento de entradas de caché vinculada
MemoryCache realiza un seguimiento de las entradas de caché vinculada para que se propaguen las opciones. En el ejemplo siguiente, el elemento expirationToken
agregado para child
también se aplica a parent
:
using (var parent = cache.CreateEntry(key))
{
parent.SetValue(obj);
using (var child = cache.CreateEntry(key1))
{
child.SetValue(obj);
child.AddExpirationToken(expirationToken);
}
}
Por motivos de rendimiento, .NET 7 ya no realiza un seguimiento de las entradas de caché vinculada de forma predeterminada. No obstante, puede habilitar el seguimiento mediante una nueva opción.
Versión introducida
.NET 7
Comportamiento anterior
Antes de .NET 7, MemoryCache realizaba un seguimiento de las entradas de caché vinculada para permitir la propagación de opciones. El seguimiento no se podía deshabilitar.
Comportamiento nuevo
A partir de .NET 7, MemoryCache no realiza el seguimiento de las entradas de caché vinculada de forma predeterminada. Se ha agregado la opción MemoryCacheOptions.TrackLinkedCacheEntries para controlar si se realiza un seguimiento de las entradas de caché vinculada o no.
Tipo de cambio importante
Este cambio puede afectar a la compatibilidad binaria.
Motivo del cambio
Este cambio se ha incorporado para mejorar el rendimiento. El seguimiento interno usa AsyncLocal<T>, que es costoso y agrega una sobrecarga significativa.
Acción recomendada
Si desea que MemoryCache siga realizando el seguimiento de las entradas de caché vinculada para que se puedan propagar las opciones, establezca MemoryCacheOptions.TrackLinkedCacheEntries en true
.
var options = new MemoryCacheOptions
{
TrackLinkedCacheEntries = true
};
var cache = new MemoryCache(options);
API afectadas
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de