Автокешірованіе в 1с-бітрікс - складно про просте, алексей Валєєв

Автокешірованіе в 1с-Бітрікс - добре розвинена і досить складна система, що дозволяє в рази зменшити число звернень до бази даних і прискорити виконання сторінок. Розуміти принципи і грамотно її використовувати повинен будь-який успішний «бітрікс-розробник» для створення швидких і якісних проектів. Сьогодні поговоримо про зв'язок кеша і шаблону компонента.

Як працює компонент

Для початку невеликий опис складових частин середньостатистичного компонента в 1с-Бітрікс:

  1. component.php - файл з кодом, який формує дані для шаблону ($ arResult) і підключає його. Крім того, може виконувати будь-які дії після отримання даних. Наприклад, встановлювати заголовок сторінки або додавати пункти в навігаційну ланцюжок.
  2. template.php - файл шаблону. В ідеалі НЕ содеріжіт ніякої логіки, лише висновок даних з $ arResult. кешируєтся html-висновок, тобто PHP код з цього файлу виконається 1 раз, потім повертатиметься html до наступного оновлення кешу.
  3. result_modifier.php - файл, який підключається до template.php і може змінювати $ arResult. кешируєтся так само як і template.php
  4. component_epilog.php - файл, який підключається після template.php. Чи не кешируєтся.

Останні 3 файла відносяться до шаблону, переважно редагувати саме їх. Component.php в стандартних компонентах змінювати не можна, тому що є шанс що правки затруться після оновлення системи.

Загальну схему роботи компонента можна уявити кількома кроками:

  1. Перевірка вхідних даних в component.php
  2. Перевірка на наявність валидного (активного) кеша файлів result_modifier.php і template.php. Якщо кеш валідний, то висновок його, заповнення $ arResult і перехід до пункту 5.
  3. У разі невалидность кеша проводяться необхідні дії для отримання даних. По суті - заповнюється масив $ arResult
  4. Підключення файлів result_modifier.php і template.php, формування + висновок html, а також «запам'ятовування» цього висновку і частини масиву $ arResult
  5. Підключення файлу component_epilog.php
  6. Виконання решти коду в 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 можна додавати дані в кеш.

Схожі записи

Схожі статті