Кешування компонентів в 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 в стандартних компонентах змінювати не можна, тому що є шанс що правки затруться після оновлення системи. У таких випадках рекомендується копіювати компонент повністю в своє поле імен (свою папку в / bitrix / components /).

Схема роботи компонента така:

  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 ()).

Навігація по публікаціям

Схожі статті