Я работаю над NopCommerce 2.40. Я хочу установить кеш на домашней странице с помощью CacheManager.
var cacheModel = _cacheManager.Get(cacheKey, () =>
{
var model = new HomePageProductsModel()
{
....
....
}
return model;
});
Когда я отлаживаю этот код. Он обрабатывает метод Get в MemoryCacheManager. Теперь на стороне администратора, когда я хочу удалить этот кеш ключом, когда я обновляю какой-либо продукт. Удалить метод, называемый ниже. Удаляет PerRequestCacheManager.
_cacheManager.Remove(string.Format("product.hometemplate-{0}-{1}", storeid, true));
Таким образом, этот кеш на домашней странице не удаляется. Есть ли какое-либо решение для этого
Некоторые контроллеры в проекте Nop.Web используют MemoryCacheManager. Эти контроллеры со статическим кешем (MemoryCacheManager) определены в файле \Nop.Web\Infrastructure\DependencyRegistrar.cs. В этом файле мы определяем, какая из реализаций ICacheManager должна быть введена.
Но я бы рекомендовал использовать тот же подход, который используется в nopCommerce. Использовать события. Подпишитесь на события вставки/удаления/обновления продукта в файле \Nop.Web\Infrastructure\Cache\ModelCacheEventConsumer.cs и сбросите кэш. Просто посмотрите, как это уже сделано.