Настройка кэширования подслоя в Sitecore - PullRequest
2 голосов
/ 14 апреля 2011

При использовании WebControls в Sitecore существует способ настроить поведение кэширования - переопределить GetCachingID метод.Есть ли способ добиться чего-то подобного с помощью Sublayouts (UserControls)?Я хотел бы добавить пользовательские параметры «VaryBy» (пример - «Vary By Moon Position»).

1 Ответ

4 голосов
/ 15 апреля 2011

Да, кэширование подслоя может варьироваться по нескольким различным критериям по умолчанию. Вы можете использовать различные параметры для этого. Варианты:

  • Зависит от данных
  • Зависит от устройства
  • Зависит от логина
  • Зависит от параметров
  • Зависит от строки запроса
  • Зависит от пользователя

Подход для настройки здесь зависит от параметров, и вы сами определяете параметры. Это можно сделать в разделе «Сведения о презентации», где вы динамически назначаете подуровень для элемента (в нижней части свойств элемента управления есть раздел для определения параметров) или можете установить это с помощью кода C #. Вот пример использования кода C # для статического назначения подслоя в моем макете:

<h1>My website</h1>
<h2>My site is great</h2>
<sc:Sublayout ID="slMyControl" path="~/path/to/my/control.ascx" VaryByParm="true" Cachable="true" runat="server" />

(Следует отметить, что в приведенном выше коде атрибут для VaryByParam на самом деле равен VaryByParm в Sitecore, что, очевидно, является опечаткой в ​​их коде.)

Теперь в C # установите параметры программно:

slMyControl.Parameters = "myKey1=MyVal1&myKey2=myVal2";

Если вы можете получить Положение Луны в C #, тогда преобразуйте ее в строку и назначьте ее параметрам:

slMyControl.Parameters = "position=" + getMoonPosition().ToString();

Я недавно кэшировал календарь по месяцу и году, которые появляются в строке запроса. Простой пример без обработки ошибок:

slEventCalendar.Parameters = string.Format("m={0}&y={1}", Request.QueryString["m"], Request.QueryString["y"]);

Строка параметра, с которой вы в конечном итоге получаете, становится частью фактического ключа кеша. Связывание этого с другими зависит от параметров, просто делая более сложный ключ кэша с большим количеством критериев и, следовательно, с большим количеством кэшированных экземпляров. Общее правило заключается в том, что кэшируйте по наименьшему количеству необходимых критериев, что приведет к наибольшему использованию из этого кэшированного экземпляра.

...