Как я настраивал оптимизацию сайта на Bitrix

Содержимое:

В данной записи я буду публиковать все свои наработки по оптимизации сайта на Bitrix. В записи будут собранны все работы которые я проводил для улучшения скорости загрузки страниц, уменьшения нагрузки сайта на сервер.

Кэширование запросов к БД

Первый пункт, который указывается почти во всех статьях и является главным требованием в разработке – это кэширование запросов к базе данных. Если вы используете запросы в файле result_modifier.php, то в нем вам НЕ нужно кэшировать запросы, вам достаточно передать полученные данные в массив $arResult. Данный массив, при включенной опции кэширования, записывается в кэш автоматически.

Речь идёт о запросах которые производятся в шаблоне сайта или на странице. В таком случае я использую готовую функцию, которую я прописал в init.php, чтобы к ней можно было ссылаться на всем сайте.

$timeSeconds – время жизни кэша
$cacheId – уникальный ключ
$callback – функция которая должна выполняться (в данной функции может быть запрос к БД)
$arCallbackParams – параметры функции

function returnResultCache($timeSeconds, $cacheId, $callback, $arCallbackParams = '') {
    $obCache = new CPHPCache();
    $cachePath = '/'.SITE_ID.'/'.$cacheId;
    if( $obCache->InitCache($timeSeconds, $cacheId, $cachePath) ) {
        $vars = $obCache->GetVars();
        $result = $vars['result'];
        // $result["status"] = "это кэш";
    }
    elseif( $obCache->StartDataCache()  ) {
        $result = $callback($arCallbackParams);
        $obCache->EndDataCache(array('result' => $result));
    }
    return $result;
}

Включение композитного сайта

В крации, компонентный сайт – это создание готовых закэшированных страниц, которые при первом запросе создаются, а в дальнейшем передаются каждому новому пользователю. То есть страница не создаётся при каждой загрузке, а просто передаётся готовая версия.

Включение композитного сайта увеличивает скорость загрузки сайта в десятки раз. Вы сразу заметите разницу. Для включения композитного сайта, вам нужно выбрать соответствующий пункт в настройках сайта. После включения композита у меня были небольшие ошибки с меню, они исправились когда я прописал в шаблоне компонента меню строку разрешающую использования компонентного сайта для данного шаблона.

$this->setFrameMode(true);

Настройка прав доступа для пользователей

Моей ошибкой было неправильное создания учётных записей для сотрудников. Я для контент-менеджеров открыл модуль “интернет-магазин”. Это действие увеличивает нагрузку на сервер, так как для пользователей подключаются дополнительные данные в меню, которыми они не пользуются. Если это пару человек, то это не сильно заметно, но если у вас более 10 сотрудников, то нужно это учитывать и открывать пользователям, только те доступы, которыми они точно будут пользоваться + это обезопасит ваш проект.

Избавление от catalog.item

При разработке второго проекта на своей работе, я решил избавиться от компонента catalog.item. Я считаю что это бесполезный компонент, потому что он делает лишние запросы к БД, которые можно было бы избежать используя полный код листинга в catalog.section. Если на вашем сайте нет функционала акций от системы bitrix, нет большого количества видов цен, то лучше не использовать данный компонент.

На этом всё!
Больше интересных статей в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime