Как ускорить сайт на 1С-Битрикс: кэширование
Рассказываем о кэшировании и технологии «Композитный сайт».
Как происходит загрузка страницы: сервер ищет последние записи, генерирует шапку, блоки, подвал страницы, загружает модули и виджеты. Если кэширования нет, то каждый раз посетитель сайта ждет полную загрузку страницы от сервера. Больше запросов к одной странице — больше ресурсов нужно для загрузки. Чем больше посетителей на странице, тем медленнее сервер загружает их для каждого.
Как кэширование помогает решить проблему с нагрузкой: запоминает конечный результат и позволяет пропустить обработку каждого запроса к странице. При первом посещении страницы информация сохраняется в хранилище, чтобы в следующий раз не загружать ее повторно. Благодаря этому сайты открываются быстрее. Это положительно влияет на SEO и формирует позитивное отношение пользователей к ресурсу за счет быстрой загрузки. Время генерации страниц и нагрузка на сервер сокращается, сайт открывается быстро.
Рассмотрим типы кэширования — в браузере и на стороне сервера.
Кэширование в браузере
Кэширование в браузере происходит на стороне пользователя. При первом посещении сайта кэш сохраняется локально. При последующих визитах браузер не тратит время на обращение запроса к серверу: он анализирует, есть ли эти файлы в кэше и подгружает их.
Главный недостаток этого типа в том, что информация хранится только у пользователя. Как только он сбросит кэш или зайдет на страницу с помощью режима Инкогнито, браузер повторно будет обращаться к серверу для генерации страниц.
Кэширование на стороне сервера
В этом типе кэширования данные страниц хранятся на сервере. Пользователь запрашивает страницу сайта: по специальному алгоритму программы собирают страницу из элементов и отправляют браузеру для отображения.
При отсутствии кэширования и увеличении количества пользователей возрастает нагрузка на сервер, так как для каждого пользователя нужно отдельно отобразить страницу. Ресурсов сервера может не хватить, а скорость загрузки сайта ощутимо снижаться.
Проблему решает серверное кэширование. По нему первый пользователь запрашивает страницу, сервер ее загружает и сохраняет в хранилище. Когда другой пользователь запрашивает эту страницу, сервер не собирает ее заново, а выдает ту, которая сохранилась у него в кэше.
Результат: сокращается работа сервера, ресурсы не используются нерационально, мощности хватает на обработку большего количества запросов одновременно.
Настроить кэширование на сервере можно с помощью memcached. Memcached — способ кэширования данных в оперативной памяти на основе хеш-таблицы.
Такой способ позволяет быстро обрабатывать десятки запросов, необходимых для обработки одной страницы, однако требует много оперативной памяти. Поэтому стоит рассмотреть настройку кэширования на CMS «1С-Битрикс». В документации для администраторов сайта есть несколько вариантов для проекта на 1С-Битрикс.
Способы кэширования на 1С-Битрикс
Кэширование снижает время отклика сайта и увеличивает его устойчивость при нагрузках. Реализуется следующими способами:
- Автокеширование — все динамические компоненты получают встроенную поддержку управления кэшированием и загружаются без запроса к базе данных.
- Неуправляемое кеширование — позволяет ограничить время кэширования компонентов. Если время не истекло, то вместо ресурсоемкого кода отдается предварительно созданный файл.
- Управляемый кеш — автоматически обновляет кэш компонентов при изменении данных.
- Кеширование меню — кэш обновляется при редактировании меню или изменении прав доступа к файлам и папкам через административный интерфейс и API.
- HTML кеш — рекомендуется включать на редко обновляемый раздел сайта с регулярным посещением пользователей. Сейчас технология считается устаревшей, вместо нее используют Композитный сайт.
- Композитный сайт — ускоряет выдачу страниц за счет создания кэша статического контента.
Рассмотрим композитный сайт подробнее.
Настройка работы композитного сайта на nginx
Композитный сайт — технология, которая увеличивает скорость загрузки сайта на 1С-Битрикс. Статическая информация сайта записывается в кэше и при повторном обращении пользователя быстро отображается.
При включении стандартного автокомпозита 1С-Битрикс отображение страниц сайта осуществляется через уровень PHP. После включения работы композитного сайта на nginx отображение страниц осуществляется на уровне nginx. Алгоритм выглядит как на схеме. С этой настройкой скорость загрузки увеличивается до 10%.
Кэширование ускоряет работу сайта для клиентов и снижает нагрузку на хостинг. Особенно полезно его использовать во время привлечения новых пользователей на ресурс.
Если нужна помощь или возникнут вопросы, напишите нам. С радостью поможем. Желаем высоких конверсий вашему проекту!
Начните мощную работу вместе с Reddock – заполните форму заказа услуги, и мы свяжемся с вами в ближайшее время!
Разработчик Bitrix Framework. Технологии
— $APPLICATION->ShowTitle();
— $APPLICATION->AddPanelButton(array());
+ $APPLICATION->ShowPanel = true;
Чтобы ещё лучше понимать всю архитектуру построения системы и сервера, то рекомендуем Вам пройти курсы Microsoft, которые теперь доступны для всех желающих за разумные деньги! Позаботьтесь о своих знаниях и опыте, чтобы в любой момент знать как исправить любые ошибки с Вашим сайтом.
2. Кеширование – инструмент повышения:
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
+ производительности проекта
— масштабируемости проекта
— отказоустойчивости проекта
3. Функции-обработчики событий RegisterModuleDependences и AddEventHandler отличаются
+ RegisterModuleDependences производит регистрацию в базе данных, а AddEventHandler в файле init.php.
— RegisterModuleDependences производит регистрацию в /bitrix/php_interface/, а AddEventHandler в базе данных
— RegisterModuleDependences и AddEventHandler не влияют на производительность базы данных, т.к работают с модулями системы и не нагружают базу данных запросами
+ RegisterModuleDependences работает с обработчиками модуля, а AddEventHandler — с обработчиками вне модулей
4. Для реализации внешней авторизации необходимо создать обработчик соответствующего события в файле
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
— /bitrix/php_interface/scripts/phpbb.php
— /bitrix/admin/php_interface/init.php
— /bitrix/php_interface/scripts/init.php
+ /bitrix/php_interface/init.php
5. HTML кеширование рекомендуется включать:
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
— для любых сайтов
+ для сайтов, где информация обновляется не часто, и ходят в основном анонимные пользователи
— для сайтов, обновление которых происходит постоянно в течение дня
— для сайтов с высокой посещаемостью
— для сайтов, где конечный размер HTML в среднем не менее 100Кб
6. Чтобы агент выполнился в заданное время необходимо:
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
+ зарегистрировать его в системе
— не включать опцию «периодический»
— добавить запись для агента в системный планировщик cron
— при создании агента обязательно указать модуль
7. Технология отложенных функций:
— позволяет выполнять функции на следующих хитах после их вызова
+ позволяет задавать заголовок страницы, пункты навигационной цепочки, CSS стили, дополнительные кнопки в панель управления, мета-теги и так далее.
+ используется в компонентах
— требует специальную поддержку со стороны php
+ выводит результаты своей работы в прологе, то есть выше по коду, чем они были заданы.
— позволяет определить код функции после её вызова
+ позволяет фрагментировать контент страницы, обеспечивая временное откладывание выполнения других функций.
8. Управляемый кеш рекомендуется выключать:
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
— для сайтов с высокой посещаемостью
— для любых сайтов
— для сайтов, где информация обновляется не часто, и ходят в основном анонимные пользователи
+ для сайтов, обновление которых происходит постоянно в течение дня
9. Если функция-агент не принадлежит ни одному из модулей, то ее необходимо разместить:
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
— в файле /bitrix/modules/ID модуля/include.php
+ в файле init.php
— в файле /bitrix/php_interface/dbconn.php
10. Если информация отдается из кэша до тех пор, пока она не поменяется в базе данных и кэш сбросится автоматически, то это:
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
— Авто кэширование.
+ Авто + Управляемое кэширование
11. Управляемое кеширование отличается от неуправляемого тем, что:
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
+ Неуправляемое кеширование не перестраивается автоматически после модификации исходных данных
— Неуправляемый кеш удаляется только вручную
— В неуправляемом кешировании нельзя задать время кеширования
— В неуправляемом кешировании применяется специальный алгоритм, который учитывает тот факт, что большая часть посетителей — это незарегистрированные пользователи
12. Функция для регистрации обработчиков событий, расположенных в модулях
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
— CEvent::Register
— CEvent::Add
— ExecuteModuleEvents
+ RegisterModuleDependences
— AddEventHandler
13. Повлиять на ход выполнения какой-нибудь API функции лучше всего с помощью:
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
— Модификацией кода модуля
— Модификацией кода компонента
+ Функционала обработчиков событий
— Кода в файле component epilog
— Кода в файле result_modifier
14. Отложенные функции:
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
+ не рекомендуется использовать в файлах шаблона компонента, результаты которых кешируются
— над результатами работы функций, обеспечивающих откладывание других функций, можно выполнять какие-либо действия
+ результаты работы этих функций выводятся в прологе
+ выполняются в самом конце страницы, в служебной части эпилога
15. Для обеспечения внешней авторизации в продукте «1С-Битрикс» необходимо установить обработчик события
Внимание! На этот вопрос нужно обязательно дать правильный ответ. Если ответ будет не правильным, то тест не будет пройден, даже если вы наберёте нужное число баллов.
— OnBeforeUserLoginByHash
+ OnUserLoginExternal
— OnAfterUserLogin