Автокэширование в 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 шаблона компонента news.list
// задача - вывести заголовок страницы вида "[Название инфоблока] (кол-во элементов)"
global $APPLICATION;

/*
// кусок кода из component.php, так устанавливаются ключи, которые попадут в кэш
$this->SetResultCacheKeys(array(
	"ID",
	"IBLOCK_TYPE_ID",
	"LIST_PAGE_URL",
	"NAV_CACHED_DATA",
	"NAME",
	"SECTION",
	"ELEMENTS",
));
*/

// этот код не сработает, т.к. в массиве $arResult не определен элемент с ключем "ITEMS"
if(isset($arResult["NAME"]) && isset($arResult["ITEMS"])) {
	$title = $arResult["NAME"]." (".count($arResult["ITEMS"]).")";
	$APPLICATION->SetTitle($title);
}

// правильный вариант, все нужные элемента массива присутствуют в кэше
if(isset($arResult["NAME"]) && isset($arResult["ELEMENTS"])) {
	$title = $arResult["NAME"]." (".count($arResult["ELEMENTS"]).")";
	$APPLICATION->SetTitle($title);
}

Данные, которые доступны в component_epilog.php и далее (т.е. указаны в SetResultCacheKeys) можно изменять в result_modifier.php и template.php. Будет закэшировано их новое значение.

Например,

// result_modifier шаблона компонента news.list
// задача - вывести заголовок страницы вида "[Название инфоблока] (кол-во элементов)"
// доступен весь массив $arResult и мы можем переопределить элементы, которые попадут в кэш
$arResult["NAME"] .= " (".count($arResult["ELEMENTS"]).")";
// теперь при отмеченной опции "Устанавливать заголовок страницы" компонент использует измененный $arResult["NAME"] и мы получим нужный заголовок

В result_modifier.php можно добавлять данные в кэш.

Например,

// result_modifier шаблона компонента news.list
// задача - "SEOшник со стажем" сказал сделать description вида "[Название элементов через запятую] скачать бесплатно без регистрации без смс"
$arNames = Array(); // сюда собираем названия элементов
foreach($arResult["ITEMS"] as $arItem)
	$arNames[] = $arItem["NAME"];
$arResult["DESCRIPTION"] = implode(", ", $arNames)." скачать бесплатно без регистрации без смс";
$cp = $this->__component; // объект компонента
if (is_object($cp))
   $cp->SetResultCacheKeys(array('DESCRIPTION')); // запомнить $arResult["DESCRIPTION"] в кэш
// component_epilog шаблона компонента news.list
global $APPLICATION;
// устанавливаем DESCRIPTION
if(isset($arResult["DESCRIPTION"])) {
	$APPLICATION->SetDirProperty("keywords", $arResult["DESCRIPTION"]);
}

Для полного понимания технологии кэширования обязательны к прочтению следующие материалы:
- Компоненты 2.0::кэширование в компоненте и далее по разделу
- component_epilog и шаблон компонента
- Компоненты

Если вам понравилась статья, подписывайтесь на обновления блога по rss или присоединяйтесь в twitter

Поделиться ссылкой с друзьями:

Комментарии (4)

  1. Lindawon:

    Есть кто дома? :)

    XEvil может решить любую капчу.

    XEvil.Net

    Купоны, дающие скидку 45% на XEvil до 31-го января:

    J2021-45-210131-fuxc8kua0cko19fg
    J2021-45-210131-fuxc8kuabg5iitgq
    J2021-45-210131-fuxc8kuamkola5gi
    J2021-45-210131-fuxc8kuauwkex93h
    J2021-45-210131-fuxc8kub60z9pqxf
    J2021-45-210131-fuxc8kubecpbhout
    J2021-45-210131-fuxc8kubmoy7mnpn
    J2021-45-210131-fuxc8kubxs4gil6t
    J2021-45-210131-fuxc8kuc64bo3m4y
    J2021-45-210131-fuxc8kuch8k4hj7b

  2. Donaldhyo:

    Приветствую Вас друзья
    Бурение скважин Бурение скважин на воду в Минске и Минской области — это процесс разрушения земельных пород в
    вертикальном направлении с целью добычи воды из недр земли с применением
    специального бурового оборудования, буровых установок на базе ЗИЛ 131, или буровых
    установок на гусеничном ходу. В результате формируется скважина, ствол которой
    укрепляется обсадными трубами.
    Стоимость бурения скважины на воду зависит от глубины, сложности геологического
    разреза, конструкции скважины и начинается от 50 рублей
    Глубина скважины в разных районах разная и может достигать 200 метров
    Почему бурить скважину на воду стоит в компании «БурТехСервис»?
    Доступные цены
    Только качественные материалы
    Собственный парк техники
    Гарантия на все выполненные работы
    Немного о нашей компании “БурТехСервис”
    С 2010 года компания “БурТехСервис” активно осуществляет свою деятельность по бурению скважин на воду под ключ. Обратившись к нам, жители частных домов и коттеджей получают возможность иметь собственный источник воды, обустроенный и готовый к эксплуатации.
    Наши заказчики рука об руку проходят с нами весь путь от изучения территории своего участка, структуры почвы и ее глубины, до бурения и обустройства. После этого вы получите полезные рекомендации, как эксплуатировать и ухаживать за пробуренной скважиной, чтобы она работала на радость Вам долгие годы. Выдаем гарантию на весь комплекс работ. В случае возникновения неполадок в работе скважины и поломок, наши специалисты быстро устранят их.
    Собственная техника для бурения
    В распоряжении “БурТехСервис” имеется полной набор специальной техники. Это техника и оборудование, применяемые на всех этапах буровых работ, включая земельные работы. Вы можете ознакомиться со буровыми комплектами , а также с фотографиями техники в процессе бурения скважины .
    Все работы по бурению осуществляются нашими специалистами со стажем работы более 10 лет в этой сфере. Ими пробурено более 2500 скважин, они знают все о структуре и глубине залегания водоносных слоев в Минской области, и с удовольствием поделятся с вами своими знаниями и практическими навыками и интересующимися заказчиками.
    Гарантийный талон и паспорт на скважину
    “БурТехСервис” выполняет свою деятельность строго в соответствии с установленными нормативными положениями, требованиями и нормами законодательства Республики Беларусь об охране и использовании водных ресурсов.
    В зависимости от целей и нужд нашего заказчика выполняем бурение как скважин на песок (до первого водоносного слоя – песчаный слой), так и артезианских скважин, расположенных глубже (водоносный слой – известняк, в котором естественными способами отфильтровывается вода).
    По окончании сотрудничества с нашей компанией “БурТехСервис” , вы получаете “Договор”, “Акт выполненных работ”, “Паспорт на скважину“, “Гарантийный талон”.
    Стоимость бурения скважины
    В стоимость бурения 1 метра скважины входит:
    Проезд к месту бурения
    Буровые работы
    Труба нПВХ из пищевого пластика
    Монтаж обсадной трубы
    3-метровый фильтр из полиамидной сетки галунного плетения европейского производства
    Обсыпка фильтра фильтрующим песком
    Прокачка скважины
    Карта глубин бурения скважин Минской и Гродненской областей
    Чтобы узнать ориентировочную глубину залегания вашего водоносного слоя, нажмите на карту. Для получения более точных сведений свяжитесь с нами по контактному номеру +375 29/33 3220505

  3. Andreinrb:

    Скважины на водопонижение в Минске и области — Бурение Скважин
    Прежде чем начинать масштабное строительство, которое предполагает значительный объем земляных работ или же работ, связанных с осваиванием горной местности, важно позаботиться о предотвращении подтопления грунтовыми водами. Если нижняя зона вырытого котлована затоплена грунтовой водой, дальнейшее строительство стоит под вопросом. Спасти ситуацию и осушить площадь для стройки, могут скважины на водопонижение в Минске. Обустройством скважин на водопонижение уже не первый год занимается компания БурАвтоГруп. Скважины на водопонижение – это гидротехнические сооружение для откачки и сбора накопившейся грунтовой воды.Для чего используются водопонижающие скважины Услугой бурение скважин на водопонижение в минской области пользуются при особом строении грунта, при затоплении земли. Обычно, такие скважины располагаются по всему периметру стройплощадки либо в небольшом удалении от зоны проведения работ.Цель оборудования водопонижающей скважины Скважина для воды на участке делается для того чтобы получить депрессионную воронку, то есть создать такие условия, чтобы подземные воды опустились ниже уровня проведения строительных земляных работ. Благодаря тому, что работы могут быть проведены локально, появляется возможность проведения стройки с начального этапа, при этом риск подтопления снижается до нуля. В зависимости от имеющихся геологических условий, водопонижающие скважины обустраиваются несколькими способами.Этапность работ при бурении скважин на водопонижение
    Технология бурения скважин на понижение предполагает наличие нескольких установок, расположенных по периметру строительного котлована. В таких скважинах, которые часто называют иголками, устанавливаются фильтры и погружные насосы для откачки воды. Накопленная вода после осушения сливается за территорией строительной площадки.
    При заказе услуги по установке скважины на понижение воды, специалисты предприятия производят постоянный контроль уровня залегания грунтовой воды и контролируют технические параметры.По окончанию работ по откачке, производится тампонаж ликвидационного типа. Если скважина была установлена в глинистой почве, тампонирование производят глиной, в скалистой – бетоном или раствором цемента.Разновидности скважин на водопонижение в Минске
    Бурение скважин для осушения участков может осуществляться наклонно или вертикально, тип бурения выбирается в зависимости от особенностей грунта. Есть несколько разновидностей скважин такого типа:Комбинированный. Скважина бурится до первого водного уровня, после чего монтируется водоподъемник для откачки.
    Водопоглащающий. Этот тип используют тогда, когда нужно опустить поднявшиеся грунтовые воды в земляные пластыниже указанного уровня понижения воды Самоизливающийся. Данный тип рекомендован в тех случаях, когда нужно снизить давление воды в горизонте или если требуется значительное понижение воды на строительном участке. В технологии бурения скважин для водопонижения используют несколько типов установок:Роторные Шнековые Ударно-канатные Вращательные
    Компания «БурАвтоГрупп» использует самый современный роторный способ бурения скважин в Минской области, так как с его помощью можно освоить грунт любой сложности и степени мягкости. Это значительно ускоряет срок изготовления скважины на водопонижение и делает конструкцию более крепкой.

  4. Donaldasl:

    Добрый день друзья
    Обустройство скважины
    Обустройство скважины – это комплекс земельных и монтажных работ, необходимых для качественного и комфортного пользования чистой водой из только что пробуренной скважины. В результате него долгожданная вода из скважины, наконец, поступает в дом. Процесс требует точных расчетов и тщательной подготовки, которую выполняют специалисты высокой квалификации, дополненной многолетним опытом в этой сфере. При обустройстве скважины компания ” БурТехСервис” ориентируется прежде всего на нужды своего заказчика, помогая выбрать оптимальный вариант, подходящий и по цели, и по цене.
    Основные этапы обустройства скважины
    Подготовка.
    На этом этапе мы с вами уже определившись со способом обустройства скважины, а именно – подобрали соответствующее оборудование (кессон, адаптер либо оголовок). А также приготовили необходимые материалы и инструменты. При выборе способа обустройства скважины специалисты руководствуются следующими данными: глубиной и диаметром скважины, учли расход воды в разных точках участка, протяженность водопроводных труб (длиной трубопровода). Несомненно, правильная подготовка помогает предупредить возникновение возможных проблем в будущем, а также избежать дорогостоящего ремонта.
    Прибытие на место монтажа. Оборудование, а также материалы и необходимые инструменты доставляются на Ваш участок.Начинаем с земляных работ. Нами подготавливается котлован при обустройстве кессоном, либо копается приямок для обустройства с адаптером. Траншея выкапывается по необходимости. Глубина при копке должна быть ниже уровня промерзания (1,5-2 метра).Далее обрезаем обсадную трубу на нужной высоте при монтаже кессона. При монтаже адаптера труба не обрезается.После этого устанавливаем кессон, либо делаем врезку в трубу скважинного адаптера.Устанавливаем также в скважину погружной насос.
    Специалисты «БурТехСервис» руководствуясь данными из паспорта скважины, подбирают насос. Необходимо учесть следующие данные:
    Глубину скважиныУровни воды в статике и динамикеДебит (производительность скважины)Горизонтальный перепад (уклон) высот скважиныРасстояние от самой высокой точки забора воды до уровня земли.Продолжаем монтаж. В кессон опускается и устанавливается оголовок, гидроаккумулятор, система автоматики с реле давления. На участке устанавливают летний поливочный кран.Для прокладки трубопровода к дому ранее уже выкопана траншея. В дом подводят две магистрали: одна водоподающая, вторая – для подводки электрического кабеля от насоса. При необходимости устанавливаем греющий кабель.После всех работ выполняем подключение оборудования к электричеству. Обязательно проводится проверка работы систем автоматики.Обустройство скважины завершено!

Оставить комментарий