вторник, 11 декабря 2012 г.

Кеширование объектов страницы в Composite C1

Я уже писал, про то, что используя параметр c1mode=perf с адресом страницы сайта, вы получите информацию о том, как быстро отрабатывает та или иная функция на странице.

Таким образом вы можете обнаружить самые медленные функции и предпринять действия для увеличения скорости отработки таких функций.

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

При использовании кеширования при втором и т.д вызове функции будет использоваться кешированный результат, а не вызов функции происходить не будет.

Давайте рассмотрим, как это сделать.

Для кеширования результатов C1-функций, Composite C1 предоставляет специальную функцию: Composite.Utils.Caching.PageObjectCache.

Как это работает?

При помощи этой функции можно "обернуть" вызов одной функции на странице или даже целый кусок XHTML-кода, в котором может быть несколько вызовов разных функций.

При первом обращении к странице, все "обернутые" вызовы функций и XHTML-код отработают как им полагается. А вот результаты, которые они вернут будут добавлены в кеш, в котором будут хранится указанное время (по умолчанию - 60 секунд). При повторном вызове "обернутых" функций и т.п. будет использоваться кеш (пока он есть).

Таким образом вы можете использовать эту кеширующую функцию на сайтах, где полное кеширование страницы - не является вариантом, или где используется общий для разных страниц функционал (неменяющиеся колонтитулы страницы и т.п).

Пример использования:

<f:function name="Composite.Utils.Caching.PageObjectCache" xmlns:f="http://www.composite.net/ns/function/1.0">
  <f:param name="ObjectToCache">
    <h1>
      <f:function name="Composite.Utils.Date.Now" />
    </h1>
  </f:param>
  <f:param name="ObjectCacheId" value="Some Unique ID 1" />
  <f:param name="SitemapScope" value="Level1" />
  <f:param name="SecondsToCache" value="3" />
  <f:param name="LanguageSpecific" value="True" />
</f:function>

У функции есть два обязательных и три необязательных параметра:
  • ObjectToCache: (тип: объект) [обязательный] То, что вы хотите кешировать. Или одна функция  или часть разметки страницы, где может быть одна или несколько функций.
  • ObjectCacheId(тип: строка) [обязательный] Идентификатор, уникальный для контента, который вы кешируете. Это значение вместе со значением SitemapScope определяет уникальный ключ кеша.
  • SitemapScope(тип: SitemapScope) [опциональный] Область видимости страницы,карты сайта, в которой кеш может использоваться. По умолчанию - 'этот веб-сайт' ('this website'), но значение можно изменить, указав конкретную страницу и т.п.
  • SecondsToCache(тип: Int32) [опциональный] Сколько секунд кешируемый объект может использоваться. По умолчанию - 60 секунд.
  • LanguageSpecific(тип: логический/Boolean) [опциональный] При значении 'true', объект страницы будет кешироваться для текущей языковой версии сайта. При значении 'false' - для всех языковых версий сайта. По умолчанию - 'true'.
Ключ кеша может быть динамическим и браться из функции, которая, например, возвращает случайное значение от 1 до 5. В этом случае будут созданы 5 кешей и результат из этих кешей может создавать впечатление случайного. Однако это не будет работать с персонализированным контентом (если вы не укажете что-то пресонализированное в ключе кеша).

По мотивам статьи на англ.: Caching Page Objects


Читайте также в этом блоге:

Комментариев нет:

Отправить комментарий