1с битрикс настройка кэширования
Вроде бы и времена, когда скачать песню в 3мб на компьютер можно было где-то за час, уже давно прошли. Да и на телефоне трафик уже много лет как исчисляется десятками гигабайт. Но как бы ни было парадоксально, сейчас вопрос скорости работы сайтов стоит как никогда остро.
Трафик все больше уходит в мобильные устройства , об этом мы писали еще в 2018 году. Значимость скорости загрузки для SEO продвижения тоже сложно переоценить. При долгой загрузке страниц возрастает показатель отказов, уменьшается конверсия.
Итак, важность скорости работы сайта мы обсудили, давайте посмотрим что можно предпринять, чтоб ускорить ваш Битрикс.
1. Минимизируйте CSS и JS файлы
Первое и самое простое, что можно сделать – это сжать JS и CSS файлы. Логика работы очень простая, из файлов убираются все «лишние» символы: пробелы, переносы строк, комментарии, переменные в JS приводятся к 1-2 символьному виду.
Если при разработке сайта на Битрикс вы подключали скрипты и стили правильно, то вам достаточно в настройках главного модуля проставить все галочки в блоке «Оптимизация CSS».
Что значит «правильно»? Это значит, что в коде шаблонов сайтов и компонентов у вас нет вставок .
Что делать, если все подключено как попало? Переподключать!
Вот пример подключения на D7:
use Bitrix\Main\Page\Asset;
Asset::getInstance()->addJs('/js/jQuery.min.js'); - правильное подключение JS.
Asset::getInstance()->addCss('/css/bootstrap-grid.css'); - правильное подключение CSS.
Пробегитесь по шаблонам сайтов и компонентов и убедитесь, что у вас нет блоков нигде. Исключением может быть разве что счетчики метрик, а лучше одного счетчика – Google Tag Manager.
Про подключение файлов на старом ядре я писал в этой статье.
Второй вариант минификации файлов – использование Grunt или Gulp. Мне больше нравится Grunt, но любители Gulp легко найдут аналоги грантовских тасков:
- grunt-contrib-cssmin – минифицирует CSS.
- grunt-contrib-uglify – минифицирует JS.
- grunt-contrib-concat – обычное объединение нескольких файлов в один.
module .exports = function (grunt) grunt.initConfig( concat: dist: src: 'js/*.js',
dest: 'js/min/all.js'
>
>,
uglify: dist: files: 'js/min/all.min.js': ['js/min/all.js']
>
>
>,
cssmin: target: files: [ expand: true ,
cwd: 'css',
src: ['*css', '!*.min.css'],
dest: 'css',
ext: '.min.css'
>]
>
>
>);
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default', ['concat', 'uglify', 'cssmin']);
>;
Важно: сжатие скриптов и стилей с помощью стороннего софта не освобождают вас от правильного подключения в bitrix.
2. Оптимизируйте изображения
Большую часть контента (по весу) на всех сайтах составляют изображения. Главное, чего нужно избежать – неоправданное использование изображений в высоком разрешении.
Зайдите в настройки любого информационного блока во вкладку «Поля» и в строках «Картинка для анонса» и «Детальная картинка» проставьте галочки «Уменьшать если большая», а потом введите оптимальные ширину и высоту изображений.
Проанализируйте какого размера картинки используются у вас на сайте и настройте все инфоблоки.
Если одни и те же изображения используются в нескольких местах с разным разрешением, то их вывод можно обернуть в CFile::ShowImage($img, $width, $height); Функция вернет HTML изображения, масштабированного в зависимости от указанных размеров. В первый параметр надо передать или ID изображения, либо путь к файлу.
В идеале, отдавать изображения в webp, но это чуть более трудоемкий процесс. Если хотите, чтоб я написал статью на эту тему, пишите в комментариях.
3. Используйте CDN
Еще один пункт, внедряемый буквально за пару минут.
CDN – сеть распределенных серверов, которая помогает быстрее загружать контент. Фактически, любые тяжелые ресурсы можно подтягивать с серверов, которые находятся ближе к конкретному посетителю. Супер актуально для компаний, чьи сайты расположены на наших серверах, а клиенты по всему миру.
Плохая новость №1: для использования технологии вам нужна активная лицензия 1С-Битрикс. Не продлили вовремя – CDN перестанет работать, ресурсы будут отдаваться как обычно.
Плохая новость №2: CDN трафик ограниченный. На разных редакциях по-разному: от 5Гб на «Старте», до 40Гб на «Бизнесе». Если вы исчерпаете лимит – ресурсы станут отдаваться в обычном режиме. Без ограничений на CDN трафик только редакция Энтерпрайз. Но у вас ведь не она, правда? :)
Плохая новость №3: битрикс пользуется услугами совершенно определенной сети CDN – CDNvideo. Если вам по каким-то причинам захочется сменить CDN провайдера, без команды опытных разработчиков вам не обойтись.
4. Избегайте 301 редиректа
Редиректы - убийцы производительности. Избегайте их везде, где это возможно. Они будут генерировать дополнительные Round Trip Time (RTT) и, следовательно, удваивает время загрузки изначальной HTML страницы, еще до того, как браузер начнет загружать контент.
SEO специалисты на этом пункте завоют. И серьезно, иногда 301 не решить определенные задачи. Просто пробегитесь по сайту (или воспользуйтесь софтом) и проанализируйте все ли действующие редиректы вам все еще нужны.
5. Используйте хостинг, рекомендуемый 1С-Битрикс или виртуальный сервер
Еще одна очень частая проблема – не оптимальная настройка хостинга. При этом сайт может работать абсолютно корректно.
Чтобы проверить все ли у вас в порядке, можно прямо из админки битрикса, протестировав производительность.
Настройки -> Производительность -> Панель производительности. Запустите тест на 1 минуту, после завершения, на вкладке «Конфигурация» вы увидите сравнение текущей конфигурации с эталоном.
Мы перепробовали какое-то количество хостингов за последние 7 лет (даже запускали свой), могу сказать, что оценка в 30 баллов – очень средняя отметка. На минимальном тарифе под 1С-Битрикс моего любимого Спринтхоста выдает 30 глазом не моргнув.
Да и любой хороший хостинг на средних тарифах, выдает 50-80. Ходят слухи, что кто-то разгонял Битрикс до 290 попугаев, но тут уже нужен сервер с хорошим железом.
На второй вкладке - «Битрикс» - найдете вердикт по настройке конфигурации. Если настроено не оптимально – ознакомьтесь с документацией и исправьте.
Если все плохо и хостер отказывается изменять конфигурацию (или переносить ваш сайт на другой сервер), стоит задуматься о его смене. На официальном сайте битрикса есть целый раздел с рекомендованными хостинг-партнерами . Выберите себе исходя из цены, качества и дополнительных плюшек. :)
6. Настройте кеширование
Следующий пункт – кеширование. Оно бывает разное, а метериала хватило бы для целой серии статей. Я хочу поговорить про встроенное в Битрикс.
Идем в настройки битрикса: Настройки продукта -> Автокеширование и включаем (если выключено).
Если вы думали, что на этом все – вы очень ошибались. Проходим по всему сайту, заходим в настройки каждого компонента и выставляем кеширование на «Авто», либо «Кешировать» и время кеширования в секундах (минимум 86400).
Можно сделать замену в IDE, запустив поиск по всему проекту. За кеширование компонентов отвечают параметры:
7. Настройте композитный сайт
Композитный сайт – запатентованная технология 1С-Битрикс и её включение действительно приводит к хорошим результатам.
В идеале настроить на хранение в memcached.
Еще несколько лет назад на подговотку сайта и отладку композитного режима ушла бы пара дней, сейчас достаточно включить Автокомпозит в настройках и радоваться жизни. Этот вариант рекомендует и сам Битрикс.
8. Не используйте старые версии PHP
Этот пункт можно было бы отнести в раздел о Хостинге, но я решил выделить его отдельно. Перестаньте сидеть на старых версиях php. Уже сам битрикс официально не поддерживает старые версии. Просто посмотрите на сравнение производительности. К сожалению, данных по Битрикс не нашел, но уверен там все примерно также.
Избавьтесь от устаревшего кода, протестируйте ваш сайт и переводите сервер/хостинг на php последней стабильной версии.
9. Включите Gzip
Это рекомендует и сам Google. Gzip – утилита сжатия файлов. По нашим наблюдениям, включение gzip на сервере заметно увеличивает скорость загрузки.
Для Apache вы можете включить сжатие в .htaccess.
Для Nginx сжатие необходимо включить в файле nginx.conf.
gzip on;
gzip_comp_level 2;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_disable "MSIE 3.(. *SV1)";
gzip_vary on;
Вопрос быстродействия сайтов очень комплексный, не надо думать, что выполнение описанных действий – панацея. Но я прекрасно понимаю, что далеко не у всех владельцев сайтов есть знания (и время) для кропотливой и вдумчивой работы над быстродействием своего ресурса, а бюджеты на подобные работы у студий могут исчисляться сотнями тысяч.
Все описанные способы позволяют практически без затрат и буквально одним днем увеличить скорость работы. Уверен, для большинства сайтов этого будет достаточно. Если же нет – всегда готовы помочь - обращайтесь :)
Узнавайте о выходе новых публикаций первыми, голосуйте за темы будущих статей в моем Телеграм канале .
В версии 8.5.1 главного модуля появилась поддержка кеширования не только на диск, но и в разделяемую память.
Акселераторы PHP поддерживают API работы с разделяемой памятью. Это значит, что все процессы веб-сервера могут читать и писать в общее адресное пространство. Это позволяет организовать совместно используемый синхронный кеш.
Хотя данные приложения, кешированные в файл, кешируются на уровне файловой системы, бывают ситуации (например: резервное копирование) когда этот кеш вытесняется и становится не эффективным для использования.
Преимуществом разделяемого кеша акселераторов является его нахождение в оперативной памяти. Использование свопинга говорит о неадекватной настройке хостинга. Недостаток своп-файла - его полный сброс при перезапуске веб-сервера.
PHP приложения
- Недостаток 1: использует общую для скриптов и кеша память.
- Недостаток 2: при кешировании требуется сериализация данных.
Демон memcached
Кроме акселераторов, схожим, но гораздо более богатым функционалом обладает демон memcached.
Это отдельный процесс использующий для коммуникаций протокол TCP/IP, который может поддерживать распределенный, разделяемый, синхронный кеш. К серверу, на котором запущен memcached, можно подключить более одного веб-сервера. Использование memcached решает проблемы кеша акселераторов, но на первое место выходит штраф производительности из-за транспорта протокола.
Пример работы с memcached на Ubuntu. Установка:
Настройки демона хорошо документированы и расположены файле /etc/memcached.conf
Для PHP имеется три расширения для работы с сервером memcached. На данный момент "1С-Битрикс: Управление сайтом" поддерживает расширение memcache. При этом при использовании memcache к нему можно подключиться через unixsocket:
Однако предварительно нужно настроить memcached для работы через сокеты. Для этого необходимо в файле настройки memcached изменить сточку OPTIONS="" на OPTIONS="-s /tmp/memcached.sock -a 00755". И только после этого вносить изменения в dbconn.php.
Настройка Битрикса
Управление кешем реализуется через константы определяемые в файле dbconn.php (В версии ядра выше 14.0 настройки производятся в других файлах).
- files - использовать в качестве хранилища кеша диск. Это полностью совместимое поведение. При неудачных попытках включения других типов кеша будет использован именно этот тип.
- memcache - подключаться к memcached для сохранения кеша. Включится только приналичии загруженного расширения "memcache" и установлении соединения с сервером.
- eaccelerator - использовать в качестве хранилища разделяемую область памяти eAccelerator'а. (Важно! eAccelerator начиная с версии 0.9.6 не поддерживает пользовательские функции кеширования, а значит для этой версии описанный здесь механизм работать не будет.)
- apc - APC.
- xcache - XCache.
Примечание. Система проверяет чтобы параметр eaccelerator.shm_max был установлен в ненулевое значение.
Курс предназначен для базовой подготовки администраторов сайтов, созданных на "1С-Битрикс: Управление сайтом". Изучив курс, вы освоите основные методы администрирования системы, а также пополните знания по темам, изученным в курсе Контент-менеджер.
Если вы добросовестно изучите курс, то научитесь:
- управлять доступом к системе, сайтами, пользователями, группами пользователей;
- работать с инструментами системы;
- использовать возможности интерфейса по управлению системой;
- работать с модулями "1С-Битрикс: Управление сайтом", связанными с оптимизацией и безопасностью работы сайта;
- выполнять работу по конфигурированию веб-системы для оптимальной работы.
Если вам предстоит самостоятельная установка системы или перенос сайта на хостинг, то без курса Установка и настройка Курс Установка и настройка предназначен для специалистов устанавливающих "1С-Битрикс: Управление сайтом" или "Битрикс24 в коробке".
Начальные требования
Необходимый минимум знаний для изучения курса:
- базовые навыки компьютерной грамотности и навыки работы с ОС Windows;
- базовые знания о WWW и организации доступа к веб-серверу;
- знание системы в рамках курса Контент-менеджер Мы считаем, что вы этот курс уже прошли и знаете многое о Битриксе. Поэтому подсказок во всплывающих окнах будет намного меньше, чем в курсе Контент-менеджер. , чтобы банально не путаться в интерфейсе.
Неплохо было бы иметь базовые навыки установки и администрирования *nix-систем.
У нас часто спрашивают, сколько нужно заплатить
Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов - ничего из этого оплачивать не нужно.
Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.
Баллы опыта
В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:
уроке.
Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.
Тесты и сертификат
После изучения курса пройдите тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение вы увидите результат обучения и там же - ваш сертификат в формате PDF.
Иконка успешно сданного вами курса отображается в вашем профиле на Freelance, если вы укажите ссылку на ваш профиль на сайте компании 1С-Битрикс.
Комментарии к урокам
Для преподавания офлайн
Если данный курс берётся в качестве основы для офлайнового преподавания, то рекомендуемая продолжительность: 3 дня (24 академических часа).
Если нет интернета
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса. Версия файла - от 11.04.2022.
Как проходить учебный курс?
Данная статья — это не научный прорыв, а лишь помощник, чтобы быстрее понять, как работает стандартный функционал в Bitrix.
Давайте представим, что в разделе каталога у нас 150 запросов к БД. Вроде бы немного при условии, если в один момент обращение к разделу происходит одним пользователем?
При одновременном обращении к разделу 200-т пользователей количество запросов равняется 200 * 150 = 30 000
Кеширование помогает снизить нагрузку на БД и сервер в целом.
Не судите за то, что я использую старое ядро в примере. Суть данной статьи показать, как это работает и потребности темы полностью покрываются.
2. Простое кеширование
Результат выполнения кода — это переменная $arCurSection со значениями полученными из кеша или запросов к БД.
Проблема данного метода в том, что если что-то изменится в инфоблоке, то результат будет нерелевантным. Решение данной проблемы описано в пункте 3.
3. Тегированный кеш
Для того, чтобы решить проблему описанную в пункте 2, надо почистить директорию с кешем /iblock/catalog (путь не относительно корня сайта, а относительно папки с кешем) в момент добавления, изменения, удаления элементов инфоблока и связанных с ним сущностей, которые выводит наш компонент.
Для того, чтобы не изобретать «городушки» для сброса кеша при изменениях, был придуман тегированный кеш.
Для того, чтобы месту хранения кеша присвоить кеш используем это:
Сброс кеша по тегу можно осуществить следующим способом:
В итоге нам нужно лишь в нужный момент (навесить на события) сделать сброс кеша по тегу.
Например, в стандартных компонентах, использующих инфоблок, используется тег вида «iblock_id_17» и по этому тегу вызывается метод сброса кеша, который вызывается в методах добавления, изменения, удаления элемента инфоблока.
Метод из ядра битрикс использующий ClearByTag:
4. Пример нестандартного использования кеша в каталоге
Когда мы знаем, как работает кеширование, то можем легко доработать кеширование у стандартного компонента каталога.
Косяк стандартного решения — при изменении какого-либо элемента сбрасывается весь кеш (элементы, разделы).
Чтобы не заставлять систему лишний раз делать запросы, производить расчеты и набирать кеш, можно для головных разделов предусмотреть отдельный кеш. Вывести из под общего тега-инфоблока.
Тут единственная трудность в том, что бы хорошенечко подумать, в каких местах стоит так сделать.
5. Заключение
Смысл статьи не в научном открытии или какой-то доселе неведомой технологии, а демонстрации простоты решений.
Да, я коснулся лишь малой части кеширования. Для простоты восприятия пусть будет этот минимум.
Если у вас есть примеры, как можно использовать данный стандартный функционал, то пишите комментарии. Если есть примеры нестандартных решений — делитесь опытом.
Рассказываем о кэшировании и технологии «Композитный сайт».
Как происходит загрузка страницы: сервер ищет последние записи, генерирует шапку, блоки, подвал страницы, загружает модули и виджеты. Если кэширования нет, то каждый раз посетитель сайта ждет полную загрузку страницы от сервера. Больше запросов к одной странице — больше ресурсов нужно для загрузки. Чем больше посетителей на странице, тем медленнее сервер загружает их для каждого.
Как кэширование помогает решить проблему с нагрузкой: запоминает конечный результат и позволяет пропустить обработку каждого запроса к странице. При первом посещении страницы информация сохраняется в хранилище, чтобы в следующий раз не загружать ее повторно. Благодаря этому сайты открываются быстрее. Это положительно влияет на SEO и формирует позитивное отношение пользователей к ресурсу за счет быстрой загрузки. Время генерации страниц и нагрузка на сервер сокращается, сайт открывается быстро.
Рассмотрим типы кэширования — в браузере и на стороне сервера.
Кэширование в браузере происходит на стороне пользователя. При первом посещении сайта кэш сохраняется локально. При последующих визитах браузер не тратит время на обращение запроса к серверу: он анализирует, есть ли эти файлы в кэше и подгружает их.
Главный недостаток этого типа в том, что информация хранится только у пользователя. Как только он сбросит кэш или зайдет на страницу с помощью режима Инкогнито, браузер повторно будет обращаться к серверу для генерации страниц.
В этом типе кэширования данные страниц хранятся на сервере. Пользователь запрашивает страницу сайта: по специальному алгоритму программы собирают страницу из элементов и отправляют браузеру для отображения.
При отсутствии кэширования и увеличении количества пользователей возрастает нагрузка на сервер, так как для каждого пользователя нужно отдельно отобразить страницу. Ресурсов сервера может не хватить, а скорость загрузки сайта ощутимо снижаться.
Проблему решает серверное кэширование. По нему первый пользователь запрашивает страницу, сервер ее загружает и сохраняет в хранилище. Когда другой пользователь запрашивает эту страницу, сервер не собирает ее заново, а выдает ту, которая сохранилась у него в кэше.
Результат: сокращается работа сервера, ресурсы не используются нерационально, мощности хватает на обработку большего количества запросов одновременно.
Настроить кэширование на сервере можно с помощью memcached. Memcached — способ кэширования данных в оперативной памяти на основе хеш-таблицы.
Такой способ позволяет быстро обрабатывать десятки запросов, необходимых для обработки одной страницы, однако требует много оперативной памяти. Поэтому стоит рассмотреть настройку кэширования на CMS «1С-Битрикс». В документации для администраторов сайта есть несколько вариантов для проекта на 1С-Битрикс.
Способы кэширования на 1С-Битрикс
Кэширование снижает время отклика сайта и увеличивает его устойчивость при нагрузках. Реализуется следующими способами:
Автокеширование — все динамические компоненты получают встроенную поддержку управления кэшированием и загружаются без запроса к базе данных.
Неуправляемое кеширование — позволяет ограничить время кэширования компонентов. Если время не истекло, то вместо ресурсоемкого кода отдается предварительно созданный файл.
Управляемый кеш — автоматически обновляет кэш компонентов при изменении данных.
Кеширование меню — кэш обновляется при редактировании меню или изменении прав доступа к файлам и папкам через административный интерфейс и API.
HTML кеш — рекомендуется включать на редко обновляемый раздел сайта с регулярным посещением пользователей. Сейчас технология считается устаревшей, вместо нее используют Композитный сайт.
Композитный сайт — ускоряет выдачу страниц за счет создания кэша статического контента.
Рассмотрим композитный сайт подробнее.
Настройка работы композитного сайта на nginx
Композитный сайт — технология, которая увеличивает скорость загрузки сайта на 1С-Битрикс. Статическая информация сайта записывается в кэше и при повторном обращении пользователя быстро отображается.
При включении стандартного автокомпозита 1С-Битрикс отображение страниц сайта осуществляется через уровень PHP. После включения работы композитного сайта на nginx отображение страниц осуществляется на уровне nginx. Алгоритм выглядит как на схеме. С этой настройкой скорость загрузки увеличивается до 10%.
Кэширование ускоряет работу сайта для клиентов и снижает нагрузку на хостинг. Особенно полезно его использовать во время привлечения новых пользователей на ресурс.
Если нужна помощь или возникнут вопросы, напишите нам. С радостью поможем. Желаем высоких конверсий вашему проекту!
Начните мощную работу вместе с Reddock – заполните форму заказа услуги, и мы свяжемся с вами в ближайшее время!
Читайте также: