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 и сбросьте два значения в кеше.