Продовжуємо про кеш

Продовжуємо про кеш

Продовжуючи тему оптимізації швидкості завантаження сайту, хочу розповісти про нову технологію від Бітрікс - композитний сайт. Як водиться, все нове - це добре забуте старе, ось і ця технологія в общем-то мало відрізняється від кешування сторінок цілком в тому ж phpbb або wordpress, хіба що з низкою технічних поліпшень. Але, про все - по порядку.

Як я вже говорив вище, вам потрібно визначити, які з компонентів будуть повністю статичними (не змінюється протягом часу або від дій користувача), динамічними (часто змінюються) і частково динамічними.
Як приклад статичних компонентів можуть виступати блоки зі списком новин (виведених в хронологічному порядку), детальні сторінки матеріалів (новин, статей, товарів), що включаються області - загалом все те, що змінюється відносно рідко.
Повністю динамічним компонентом може виступати той, який марно складати в кеш (який цілком буде оновлений на наступному хіті). Типовими представниками є компоненти з рандомних набором товарів, статей.
Прикладом частково динамічного компонента може служити той, який залежить від дій користувача. Наприклад - корзина на сайті, або стан внутрішнього рахунку користувача, блок з вибором регіону і т.д.

Тепер про те, як же технічно навчити компоненти працювати з композитом.
У випадку зі статичними компонентами - досить додати в верхню частину шаблону виклик методу $ this-> setFrameMode (true) ;. Цим викликом ми повідомляємо шаблоном, що він завжди буде «голосувати» за композит (тут і далі я буду вживати термін «голосування», щоб сильно не відходити від термінології Бітрікс).

З динамічними компонентами все дещо складніше. Розберемо спочатку «частково динамічні» на прикладі кошика користувача. Наприклад, в нашому кошику показується кількість товарів в ній лежать. Розумно припустити, що динамічної областю в даному компоненті буде кількість товарів:

На даному прикладі видно, що в залежності від кількості товарів в кошику змінюється напис, відповідно її потрібно виділити в динамічний блок, а решта помітити як кешіруемий контент. Сказано зроблено! Для того, щоб позначити шаблон компонента динамічним, потрібно в його початку викликати метод $ this-> createFrame () -> begin () ;. Даний метод повертає інстанси класу, який керує кешуванням в шаблонах компонентів. Викличемо його приблизно так:

$ ObFrame = $ this-> createFrame () -> begin ( 'Завантаження');
Після цього в верстці шаблону в потрібному місці необхідно виділити умова, залежно від якого показується даний текст (код спрощений, не забудьте винести тексти в мовні константи):