Sitecore - программно очистить кеш пользователя
У меня есть пользовательский поставщик ролей, в котором роль конкретного пользователя может меняться при выполнении определенных действий.
Это вызывает пару проблем:
Если к пользователю добавлена роль, которая позволит ему получить доступ к странице, это не вступит в силу, пока я не очистлю кэш sitecore вручную, используя
/sitecore/admin/cache.aspx
Мы кэшируем визуализацию строки меню пользователем. Но когда разрешения меняются, новые элементы могут добавляться / удаляться, но это не отражается, потому что это происходит из кэшированной версии.
Есть ли способ, которым я могу программно очистить кеш сайта конкретного пользователя?
1 ответ
Да - способ, которым Sitecore делает это, добавляет пользовательские данные в ключ кэша для рендеринга. Это хранилище в html-кэше, поэтому для его очистки необходимо получить html-кеш и очистить все записи, содержащие имя пользователя.
Этот фрагмент сделает это:
// Need to clear the cache for the header and the user profile....
var htmlCache = CacheManager.GetHtmlCache(Context.Site);
// Remove all cache keys that contain the currently logged in user.
var cacheKey = $"#login:True_#user:{Context.GetUserName()}";
htmlCache.RemoveKeysContaining(cacheKey);
Это очищает все записи в html-кэше для текущего пользователя. Если вы хотите очистить для другого пользователя, просто измените Context.GetUserName()
чтобы получить конкретного пользователя, которого вы хотите очистить.