Я уже писал, про то, что используя параметр c1mode=perf с адресом страницы сайта, вы получите информацию о том, как быстро отрабатывает та или иная функция на странице.
Таким образом вы можете обнаружить самые медленные функции и предпринять действия для увеличения скорости отработки таких функций.
Одним из способов ускорения работы таких функция может быть использование кеширования результатов, возвращаемых этими функциями.
При использовании кеширования при втором и т.д вызове функции будет использоваться кешированный результат, а не вызов функции происходить не будет.
Давайте рассмотрим, как это сделать.
Для кеширования результатов C1-функций, Composite C1 предоставляет специальную функцию: Composite.Utils.Caching.PageObjectCache.
У функции есть два обязательных и три необязательных параметра:
По мотивам статьи на англ.: Caching Page Objects
Читайте также в этом блоге:
Таким образом вы можете обнаружить самые медленные функции и предпринять действия для увеличения скорости отработки таких функций.
Одним из способов ускорения работы таких функция может быть использование кеширования результатов, возвращаемых этими функциями.
При использовании кеширования при втором и т.д вызове функции будет использоваться кешированный результат, а не вызов функции происходить не будет.
Давайте рассмотрим, как это сделать.
Для кеширования результатов 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>
<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
Читайте также в этом блоге:
Комментариев нет:
Отправить комментарий