Я пытаюсь найти лучший способ кэширования html по ролям Sitecore. Я думаю, используя VaryByParam, но я не статически привязываю свои визуализации. Все они динамически добавляются на страницу. Я использую веб-формы, любая помощь будет оцененаПользовательский кеш Sitecore по роли
ответ
Итак, я в конечном итоге использовал часть вашего решения. Я добавляю ответ, потому что Это было не так просто, как просто включение Vary By Param.
Сначала я должен был реализовать RoleManager
public class RoleManager
{
private User currentUser;
public string GetReadRole(Item item)
{
currentUser = Sitecore.Context.User;
//int found = 0;
foreach (Role role in currentUser.Roles)
{
return role.LocalName; //return the role they are in
}
return "";
}
}
Тогда я должен был сделать sublayout, который наследуется от Sitecore.Web.UI.WebControls.Sublayout заменить sublayout по умолчанию в Sitecore.
protected RoleManager roleManager = new RoleManager();
public override string GetCacheKey()
{
Sitecore.Sites.SiteContext site = Sitecore.Context.Site;
if ((Cacheable && ((site == null) || site.CacheHtml)) && !SkipCaching())
{
if (VaryByParm)
{
return base.GetCacheKey() + "_#userRole:" + roleManager.GetReadRole(this.GetItem());
}
return base.GetCacheKey();
}
return string.Empty;
}
Теперь все, что осталось сделать, это добавить sublayout рендеринга заменить рендеринг класс трубопровода calls.This унаследованный от Sitecore.Web.UI.SublayoutRenderingType
public override System.Web.UI.Control GetControl(NameValueCollection parameters, bool assert)
{
var sublayout = new RoleSublayout();
foreach (string key in parameters.Keys)
{
ReflectionUtil.SetProperty(sublayout, key, parameters[key]);
}
return sublayout;
}
Весь код в настоящее время сделано, и просто нужно добавить в web.config линия модифицированном была
<control template="sublayout" type="Sitecore.Web.UI.SublayoutRenderingType, Sitecore.Kernel" propertyMap="Path=path" />
и теперь
<control template="sublayout" type="YOURNAMESPACE.RoleSublayoutRenderingType, DLLNAME" propertyMap="Path=path" />
Edit: Для этой работы, Вам необходимо включить VeryByParam в Sitecore
Эта статья мне помогла тонн http://sitecoreblog.alexshyba.com/sitecore_output_caching_kick_it_up_a_notch/
«Vary By Parm» для кэша html Sitecore предназначен для параметров рендеринга. Зависят от ваших зависимостей кода вы выбираете правильный параметр кэша varBy (ов)
См:
creating-sitecore-sublayouts-dynamically
Иногда, если кэш по умолчанию HTML не должен совпадать с вашей логикой, вы можете использовать пользовательское кэширование Sitecore для тяжелых фрагментов или создать свой собственный «var By». См. Sitecore Custom Cache
- 1. пользовательский домен sitecore и роли, возвращающие нуль
- 2. Sitecore получить все Роли
- 3. Домены и роли Sitecore
- 4. Иерархия роли Sitecore
- 5. Sitecore Droplink для роли пользователя
- 6. Как очистить кеш в Sitecore
- 7. роли и рабочий процесс sitecore
- 8. Sitecore - Стандартные роли для пользователей
- 9. Sitecore: разрешить пользователю/роли публиковать
- 10. Clojure core.cache пользовательский кеш
- 11. Sitecore Пользовательский профиль
- 12. Миграция безопасности Sitecore (пользователь/домен/роли/группы) между экземплярами Sitecore?
- 13. Пользовательский MTA для Sitecore ECM
- 14. Sitecore, предотвратите кеш HTML для ответа Redirect
- 15. Sitecore 8.1 выходной кеш-выход не очищается
- 16. Совместимый кеш не работает в веб-роли
- 17. Параметры конфигурации sitecore/Insert (роли, настройка доступа?)
- 18. Sitecore CMS Создание нового пользователя и роли
- 19. Portable Gallio.Echo и пользовательский кеш
- 20. Sitecore MVC Пользовательский маршрут при использовании конвейера рендеринга Sitecore
- 21. cancan фильтра записи по роли
- 22. Как настроить кеш-контроль заголовка ответа в Sitecore?
- 23. пользовательский/редактор вкладки порядок в sitecore
- 24. Пользовательский тип почтового типа - изменение роли пользователя
- 25. Переадресация Sitecore по ошибкам
- 26. Поиск по индексу Sitecore
- 27. Рекомендации по использованию Sitecore
- 28. Хромированный пользовательский кеш-каталог не работает
- 29. Как добавить пользовательский контроль в Sitecore?
- 30. Как создать пользовательский токен в sitecore
Спасибо за ответ. Я читал обе предоставленные статьи, и я все еще застрял. Я использую sublayouts в редакторе содержимого sitecore и те ссылки ascx-файлы. У нас много пользователей, но они разбиты на большие группы, такие как Althelete, Hobiest и т. Д. Эти группы все видят разное содержание. Я хочу, чтобы иметь возможность кэшировать вывод, зависящий от этих ролей, но не может для жизни меня выяснить, как перехватить конвейер кэша с текущей настройкой. У меня есть – KevinDev
. Можете ли вы добавить образец кода вашей логики пользователя/группы. я думаю, вам нужно добавить группу пользователей в качестве «параметров рендеринга» или добавить ее в строку запроса. чем вы можете использовать этот кеш varBy .. otherwish the var by User, возможно, меньше хитов кэша. другой вариант Пользовательский кеш-файл Sitecore –
Добавьте в ответ «Пользовательское решение кеша». –