Технологія композитний сайт, що це і як налаштовується

У даній статті не хотілося б зупинятися на перевагах, які дає технологія композит, а хотілося б в загальному обхопити технічну сторону питання. Технологія композитний сайт - це запатентована технологія компанії 1С-Бітрікс прискорення завантаження сторінок сайту. Дана технологія доступна на всіх редакціях продукту Бітрікс.

підготовчі заходи

Включення композиту доступне з версії головного модуля 14.5 (подивитися можна в Адміністрування -> настройки -> модулі -> головний модуль). Чи включається композитний режим кнопкою "Включити композитний режим":

Технологія композитний сайт, що це і як налаштовується

Якщо Ви не бачите у себе написи "Включити композитний режим", це означає, що у Вас стара версія і без поновлення ядра (головного модуля) Бітрікс не обійтися.
Далі нам знадобиться підключитися до сайту по фтп (можна звичайно і без оного обійтися і робити все з адмінки Бітрікс, але це буде в десятки разів повільніше). Заходимо в /bitrix/php_interface/dbconn.php і в кінці файлу дописуємо два рядки: де ми включаємо режим налагодження і підключаємо журнал log123456.txt (називаємо довільно, головне щоб назва була унікально в рамках безпеки), куди буде записуватися налагоджувальна інформація, яка допоможе нам налаштувати композит. Завдяки включенню констранти BX_COMPOSITE_DEBUG, в числі іншого, буде створюватися історія змін сторінок в кеші (/ bitrix / html_pages / site_name /) з розширенням .delete. але про це пізніше.
По завершенню налаштування композиту не забудьте видалити ці рядки, в іншому випадку файл журналу буде швидко розростатися, займаючи дорогоцінне місце. Файл журналу, при зазначеній налаштуванні, буде розташований в корені сайту. Відразу можна розмістити код кнопки композиту в футер шаблону сайту, в потрібне місце. Це краще зробити, так як у мене був випадок коли кнопка була видно на передньому плані через особливості верстки, і починаєш дивуватися начебто все зробив, а де ж заповітна кнопочка. Власне сам код: Зовнішній вигляд композитної кнопки можна налаштовувати в частині колірної схеми:
Технологія композитний сайт, що це і як налаштовується

Підготовчі заходи можна вважати закінченими, залишилося зробити резервну копію сайту, і можна починати налаштовувати :)

Налаштування композитного режиму

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

Почнемо з головної сторінки сайту "/index.php". В хромі на головній сторінці тиснемо F5, щоб оновити сторінку. Під час виконання даної дії і, з огляду на те, що перебуває в режимі налагодження композиту, всі компоненти, які розташовані на головній сторінці, а точніше шаблони компонентів, голосують ЗА або ПРОТИ композиту. Самі компоненти голосують за замовчуванням за. Тепер, після настільки не хитра дії, можна подивитися список компонентів, які проголосували проти, їх то і потрібно налаштувати на роботу в композитному режимі. Для цього відкриваємо журнал log123456.txt і бачимо щось на зразок цього: Тут потрібно звернути увагу на рядок Reason: /bitrix/templates/evrotex/components/bitrix/news/rent/news.php. В даному випадку, шаблон rent комплексного компонента news голосує проти. Відкриває цей шаблон і налаштовуємо для роботи в композитному режимі.

Так як для голосування ЗА композит в шаблонах може міститися 2 види областей - це статична і динамічна, то і визначення їх здійснюється двома способами:
1. Для перекладу компонента в станіческую зону в шаблоні компонента, спочатку пишуть $ this-> setFrameMode (true) - це означає, що компонент "голосує" за. Відповідно, якщо потрібно примусово виставити голосування проти, то використовується $ this-> setFrameMode (false) (поки не знаю навіщо, якщо і так голосує проти, але можливо є якісь нюанси, невідомі мені)

2. Для створення динамічної зони використовується метод createFrame. В динамічну зону можна включати як шаблон цілком, так і у вигляді динамічної зони в частині шаблону. Тобто все, що зазначено в статичної зоні потрапляє в композитний кеш, а динамічні зони завантажуються кожен раз за допомогою ajax-запиту.

Розглянемо кілька прикладів, взятих з курсу Бітрікс:
У даній випадку завершення динамічної зони не потрібно, але я все ж рекомендую це зробити за допомогою -> end (), так як у мене з-за відсутності -> end () на одному з сайтів злітала верстка з невідомих мені причин. Загалом нічого складного.
Відстежувати зміни потрібно в журналі log123456.txt. Наприклад, у вас при першому відкритті журналу було 3 компонента, які проголосували проти. Ви вносите зміни в шаблони компонентів, змушуючи їх голосувати за композит. Після чого очищаєте або видаляєте журнал і оновлюєте в браузері настроюється сторінку. Якщо всі компоненти налаштовані правильно, то журнал не створюється, в іншому випадку триває подальша настройка.
У разі, коли потрібно зробити динамічну зону в шаблоні сайту (наприклад шаблон малої кошика потрібно в динаміку винести), то можна скористатися наступними методами: Коли оцінний лог більше не створюється, з'являється заповітна кнопка композиту, сигналізуючи про те, що композит заробив, але розслаблятися ще рано:)

налагодження композиту

Як на дисерт буває найсмачніше, так і в композиті найцікавіше в кінці.
Відкриваємо каталог / bitrix / html_pages /, де створюється композитний кеш сторінок.
Раніше певна константа define ( "BX_COMPOSITE_DEBUG", true) запускає не тільки механізм записи всіх голосувань "проти", а також дозволяє створювати історію змін сторінок в кеші (/ bitrix / html_pages / site_name /) з розширенням .delete. Що значить це розширення? Воно означає, що ні дивлячись на те, що лог з записами голосування компонентів, які голосували проти композиту, вже не створюється, проте кеш перезаписується на кожному хіті. З'являються файли кешу з розширенням .delete. при повторному оновленні сторінки після включення композиту, через появу унікальної інформації, яка генерується при кожному оновленні. Як приклад можна привести генерацію унікальних id або каптчі.

Виникає резонне питання, як знайти причину і виправити?

Перше вирішується порівнянням вмісту двох різних файлів кеша з розширенням .delete. для однієї і тієї ж сторінки сайту і знаходженням відмінностей. Ось ці відмінності і є остання перепона, яка заважає коректно заробити композиту. Для пошуку цих відмінностей можна використовувати різні інструменти. Особисто я зупинив вибір на онлайн сервісі onlinewebtool.com. Спритно працює, а головне дуже наочно показується відмінності двох порівнюваних сторінок.
Що стосується другого, тобто виправлення, то тут немає єдиного рецепту і причини можуть бути якими завгодно. Я зазвичай пошук причини починаю з пошуку того компонента або частини сайту, яка включає назви класу того контейнера, який містить в собі проблемний шматок. Припустимо, ми бачимо, що проблемний шматок розташований в хедері (шапці) сайту. Відкриваємо header.php шаблону сайту і по класу або id знаходимо проблемне місце. Останній раз на сайті, який я перекладав в композит, проблемним місцем виявилася спливаюча форма зворотного зв'язку, яка перебувала в header.php і містила функцію генерації каптчі CMain :: CaptchaGetCode ()
Правда потрібно зізнатися що вирішити проблему з освітою файлів з розширенням .delete. вдається не завжди. Тут на допомогу приходять два бувалих одного це техподдерка і форум.

Ну і наостанок пару ремарок

Схожі статті