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

Надеюсь это поможет

Другие вопросы по тегам