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

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

23.10.2021
Содержание:

В данной записи я буду публиковать все свои наработки по оптимизации сайта на 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, нет большого количества видов цен, то лучше не использовать данный компонент.