Сброс всего кэша одновременно с помощью Enterprise Caching Block - PullRequest
0 голосов
/ 29 декабря 2011

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

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

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

Спасибо

1 Ответ

0 голосов
/ 29 декабря 2011

Чтобы обеспечить более эффективную работу, чем FileDependency, вы можете обернуть SqlDependency в ICacheItemExpiration.См. SqlCacheDependency с блоком приложения для кэширования для примера кода.

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

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

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

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