Автокешірованіе в 1с-Бітрікс - добре розвинена і досить складна система, що дозволяє в рази зменшити число звернень до бази даних і прискорити виконання сторінок. Розуміти принципи і грамотно її використовувати повинен будь-який успішний «бітрікс-розробник» для створення швидких і якісних проектів. Сьогодні поговоримо про зв'язок кеша і шаблону компонента.
Як працює компонент
Для початку невеликий опис складових частин середньостатистичного компонента в 1с-Бітрікс:
- component.php - файл з кодом, який формує дані для шаблону ($ arResult) і підключає його. Крім того, може виконувати будь-які дії після отримання даних. Наприклад, встановлювати заголовок сторінки або додавати пункти в навігаційну ланцюжок.
- template.php - файл шаблону. В ідеалі НЕ содеріжіт ніякої логіки, лише висновок даних з $ arResult. кешируєтся html-висновок, тобто PHP код з цього файлу виконається 1 раз, потім повертатиметься html до наступного оновлення кешу.
- result_modifier.php - файл, який підключається до template.php і може змінювати $ arResult. кешируєтся так само як і template.php
- component_epilog.php - файл, який підключається після template.php. Чи не кешируєтся.
Останні 3 файла відносяться до шаблону, переважно редагувати саме їх. Component.php в стандартних компонентах змінювати не можна, тому що є шанс що правки затруться після оновлення системи.
Загальну схему роботи компонента можна уявити кількома кроками:
- Перевірка вхідних даних в component.php
- Перевірка на наявність валидного (активного) кеша файлів result_modifier.php і template.php. Якщо кеш валідний, то висновок його, заповнення $ arResult і перехід до пункту 5.
- У разі невалидность кеша проводяться необхідні дії для отримання даних. По суті - заповнюється масив $ arResult
- Підключення файлів result_modifier.php і template.php, формування + висновок html, а також «запам'ятовування» цього висновку і частини масиву $ arResult
- Підключення файлу component_epilog.php
- Виконання решти коду в component.php
Що потрібно пам'ятати
Вміст масиву $ arResult на різних етапах різниться. У result_modifier.php і template.php потрапляє масив, що містить ВСЕ дані, які отримані на кроці 3. У файлі component_epilog.php і коді компонента, який виконується після нього, доступні дані масиву $ arResult з ключами, які були вказані в функції $ this -> SetResultCacheKeys (Array ()). Виклик її відбувається в компоненті.
Дані, які доступні в component_epilog.php і далі (тобто вказані в SetResultCacheKeys) можна змінювати в result_modifier.php і template.php. Буде закешовану їх нове значення.
У result_modifier.php можна додавати дані в кеш.