Sitecore > Отключить html кеширование рендеринга
Я пытаюсь обновить старый проект (основанный на витрине магазина для Sitecore 8.0) до версии Sitecore 8.1(самой последней на данный момент). Во время этого процесса я столкнулся с проблемой, когда вижу одинаковые продукты для всех категорий. Так, например, я выбираю категорию впервые и вижу правильные продукты. После этого я выбираю любую другую категорию, но все равно вижу те же товары (из первой категории). Эти данные возвращаются рендерингом ProductList (рендеринг контроллера), и он больше не запускается после первого вызова (попытка выполнить соответствующее действие в CatalogController в режиме отладки). Если мы очистим все кэши (..sitecore/admin/cache.aspx) - тогда это будет работать снова, но только в первый раз.
Я понимаю, что не могу отключить кэширование для всего сайта, мне нужно сделать это для этой общей страницы (с "*" в названии элемента), где отображаются коммерческие данные - так же для всех категорий и страниц продукта. Я проверил этот рендеринг в режиме разработки и вижу, что все флажки, относящиеся к кешу, в настоящий момент сняты. Не знаю, что я пропустил.
Заранее благодарю за помощь.
2 ответа
Отключенные настройки кэширования находятся в подробностях презентации на уровне управления:
Кроме того, вы должны убедиться, что кэширование отключено в вашем определении подслоя (или рендеринга) (в /sitecore/Layout/Sublayouts):
Я полагаю, что у вас включено кэширование на уровне определения элемента управления / подслоя, что приведет к кешированию этого рендеринга на каждой странице сайта. Некоторое время назад мне удалось найти решение, позволяющее отключить кеширование для конкретного рендеринга / подслоя на определенных страницах., сохраняя при этом кеширование на других страницах.
Я в основном создал новый шаблон параметров рендеринга с флажком "Отменить настройки кэша", затем в своем элементе определения рендеринга я установил шаблон параметров на новый шаблон, если ваш сайт работает на Sitecore MVC, выполните следующие действия:
Создайте класс с именем SetCacheability
namespace Sitecore.SharedResources.Pipelines.Rendering
{
public class SetCacheability : Sitecore.Mvc.Pipelines.Response.RenderRendering.SetCacheability
{
protected override bool IsCacheable(Sitecore.Mvc.Presentation.Rendering rendering, Sitecore.Mvc.Pipelines.Response.RenderRendering.RenderRenderingArgs args)
{
if (!String.IsNullOrEmpty(rendering.Parameters["Cancel Cache Settings"])
&& rendering.Parameters["Cancel Cache Settings"] == "1")
{
return false;
}
return base.IsCacheable(rendering, args);
}
}
}
Создайте файл конфигурации патча в вашей папке include:
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<mvc.renderRendering>
<processor patch:instead="processor[@type='Sitecore.Mvc.Pipelines.Response.RenderRendering.SetCacheability, Sitecore.Mvc']"
type="Sitecore.SharedResources.Pipelines.Rendering.SetCacheability, [YOUR ASSEMBLY NAME]"/>
</mvc.renderRendering>
</pipelines>
</sitecore>
</configuration>
Вот блог, который я написал по этому вопросу: http://www.sitecorecoding.com/2014/09/disabling-caching-for-rendering-on-some.html
Надеюсь это поможет