Я попал в CacheItem
, который не убирался правильно.Глядя на MSDN и исправляя себя при использовании вычислений на основе Utc, я обнаружил эту запутанную информацию:
AbsolutExpiration
используется, чтобы установить «keep-alive» CacheItem
, Priority.NotRemovable
используется, чтобы CacheItem
существовал вечно.Нет уведомления о том, какое свойство переопределяет другое.
Приведенный ниже код компилируется, и SQL Profiler также подтверждает, что база данных запрашивается только один раз, тогда как каждый другой запрос поступает из кэша.
CacheItemPolicy _cachePolicy = new CacheItemPolicy()
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddHours(6)),
Priority = CacheItemPriority.NotRemovable
};
Я предполагаю, что этот код заставляет элементы кеша оставаться навсегда, но очищается через 12 часов после создания в соответствии с примечанием MSDN о настройке.
"Реализации кэша должны устанавливать приоритет NotRemovable для записи в кэше только в том случае, если реализация кэша предоставляет способы удаления записей из кэша и управления количеством записей в кэше"
Тогда с другой стороны, зачем обоим свойствам вообще работать вместе?Приносит ли реализация что-то вроде «более несъемного»?