Одновременная очистка всего кеша с помощью Enterprise Caching Block

Я изучаю возможность использования Enterprise Caching Block для моей службы .NET 3.5 для кеширования набора статических данных из базы данных.

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

Есть ли способ зарегистрировать обратный вызов для всего кеша, чтобы я не видел, как тысячи обратных вызовов вызываются при очистке кеша?

Спасибо


person mvm    schedule 28.12.2011    source источник
comment
В качестве продолжения, есть ли лучший способ, чем использование FileDependency для кэширования статических данных из базы данных. Например, если я хочу кэшировать список стран и их коды валют, которые мы поддерживаем и хранятся в базе данных. Эти данные не изменятся, если мы вручную не добавим новую запись в базу данных. Есть ли лучший способ зависимости, который я могу использовать для запуска изменения и очистки кеша?   -  person mvm    schedule 29.12.2011


Ответы (1)


Чтобы решить ваши последующие действия лучше, чем FileDependency: вы можете обернуть _ 1_ в ICacheItemExpiration. Пример кода см. В SqlCacheDependency с блоком приложения кэширования.

Такой подход будет работать только с SQL Server и потребует настройки Service Broker.

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

Другой подход может заключаться в использовании ICacheItemRefreshAction, который выполняет любые операции только тогда, когда кеш пуст (т.е. последний элемент был удален).

person Randy supports Monica    schedule 29.12.2011