CachingCallHandler нет способа сделать недействительным объект кеша? - PullRequest
0 голосов
/ 10 августа 2010

CachingCallHandler из библиотеки предприятия кэширует элементы, используя NoAbsoluteExpiration.Но я не вижу способа сделать кеш недействительным.То, что кто-то хотел бы, чтобы элемент кэшировался вечно без возможности сделать его недействительным, не имеет никакого смысла.

Прежде чем я реализую свой собственный метод аннулирования, я хотел проверить, что не существует тривиального механизма аннулированиячто я не знаю?

Обновление:

Похоже, это не встроено. Но я думаю, что он использует gethashcode для ключа.Я, вероятно, таким образом могу удалить ключ для аннулирования.

Я все еще пытаюсь выяснить, почему кто-то хотел бы скользящего истечения.Конечно, если можно привязать истечение срока действия к базе данных или обновлению файла с аннулированием, тогда это может быть идеальным решением.Тем не менее, без таких продвинутых механизмов аннулирования кэша это кажется бессмысленным.

1 Ответ

0 голосов
/ 17 августа 2010

Вы писали:

То, что нужно, чтобы элемент кэшировался вечно

Но, как вы заметите позже, это на самом деле скользящее истечение, поэтому элементы в конечном итоге удаляютсяиз кэша, если к ним нет доступа в течение определенного периода времени.

К сожалению, CachingCallHandler использует только скользящий срок действия:

Вот что он делает в коде:

private void AddToCache(string key, object value)
{
    object[] cacheValue = new object[] { value };
    HttpRuntime.Cache.Insert(
        key,
        cacheValue,
        null,                      // No Cache Dependencies
        Cache.NoAbsoluteExpiration,
        expirationTime,            // Sliding expiration (default 5 minutes)
        CacheItemPriority.Normal, 
        null                       // No CacheItemRemovedCallback
    );
}

Что касается смысла этого подхода, то он кажется немного ограниченным.Тем не менее, он учитывает сценарий, в котором у вас есть довольно статичные данные, которые не нужно обновлять по требованию.

Обратите внимание, что CachingCallHandler был удален из Enterprise Library 5.0 из-за «неразрешимых уязвимостей безопасности»так что вы можете не захотеть использовать эту функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...