Me encontré en un CacheItem
que no se limpió correctamente. Mientras mira a MSDN y corregir a mí mismo en el uso de cálculo basada en UTC, encontré esta información confusa:¿Cómo funcionan el almacenamiento en caché 'Prioridad' y 'AbsoluteExpiration'?
AbsolutExpiration
se utiliza para establecer un "keep-alive" de una CacheItem
, Priority.NotRemovable
se usa para forzar CacheItem
a existir para siempre. No hay notificación sobre qué propiedad prevalece sobre la otra.
El código siguiente compila y el Analizador de SQL también confirma que la base de datos se consulta solo una vez, mientras que todas las demás solicitudes provienen de la memoria caché.
CacheItemPolicy _cachePolicy = new CacheItemPolicy()
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddHours(6)),
Priority = CacheItemPriority.NotRemovable
};
que suponer que esta fuerza código de los elementos de la caché para quedarse para siempre, pero se borran después de 12 horas a partir de la creación, de acuerdo con la nota del MSDN acerca de la configuración.
"implementaciones de caché debe establecer la prioridad NotRemovable para una entrada caché sólo si la aplicación de caché proporciona formas para desalojar entradas de la memoria caché y para gestionar el número de entradas de caché"
A continuación, el Por otro lado, ¿por qué ambas propiedades funcionarían juntas? ¿La implementación trae algún tipo de "más no extraíble"?
Me lo estaba preguntando gracias a la documentación poco clara. En mi caso, me gustaría que la entrada almacenada en la memoria caché no se elimine a menos que caduque para evitar que la memoria caché la limpie con mucha carga antes de que caduque. –