C# Использование кэширования зависимости кеша

Я пытаюсь реализовать кэширование в веб-приложении. Кэширование должно быть сделано в BLL.

Подпись метода BLL

public static List<Ailias> Select(List<Filter> filters) 

и в данный момент просто вызывает соответствующий метод в DAL.

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

Как я могу добавить эту зависимость, все, что я могу найти в документации, это зависимость от файла?

2 ответа

Решение

Существует, AFAIK, два предопределенных CacheDependancies (File и Sql), однако ничто не мешает вам реализовать свой собственный CacheDependancy, как описано в этой ссылке

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

"... всякий раз, когда объект фильтров отличается..."

Отличается от чего? Что-нибудь использовалось ранее в этом вызове метода? Похоже, ваша коллекция списков является вашим ключом кеша.

Рассмотрите возможность реализации уникального ключа хеш-функции в коллекции List и сохраните два элемента в своем кэше - ключ кэша из вашего фильтра со статическим именем, например "list-alias-filter-key", и коллекцию List.

Когда вы делаете последующие вызовы метода, сравните уникальный хеш-ключ List (ключ кеша) с ключом в "list-alias-filter-key". Если они одинаковы, вы знаете, что можете безопасно извлечь кэшированное значение для List. Если они различаются, запросите с помощью новой коллекции List и сбросьте два значения в кеше.

Другие вопросы по тегам