279  /  382
Справочник

Оптимизация количества запросов к серверу

Просмотров: 31239
Дата последнего изменения: 13.11.2023
Александр Суворов
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
1
2
3
4
5
Недоступно в лицензиях:
Старт, Стандарт

Если проект находится на отдельном сервере, то необходимо использовать настройку путей в модуле Push & Pull, позволяющая современным браузерам ходить напрямую на сервер очередей.

До появления этой опции в версии 15.5.1 приходилось делать проксирование запросов. (Запрос отправлялся на сервер сайта, так как старые браузеры не поддерживают прямые запросы AJAX на другие домены, и уже оттуда запрос перенаправлялся на сервер очередей через внутренние правила). Это создавало нагрузку и лишний трафик.

Теперь все новые браузеры обращаются напрямую на сервера. Но из-за особенности работы нашей реализации JS с сервером, им приходится делать дополнительно на каждое подключение OPTIONS запрос. Чтобы избавится от него, необходимо изменить конфигурационные файлы сервера.

Откройте файл bx/conf/im_subscrider.conf, в описании локейшена location ^~ /bitrix/sub { проверьте есть ли у вас такое условие:

if ($arg_time) {
	push_stream_last_received_message_time "$arg_time";
}

Если нет, то добавьте. Выглядеть это должно примерно так:

push_stream_subscriber            long-polling;
push_stream_allowed_origins "*";
push_stream_channels_path        $arg_CHANNEL_ID;
push_stream_last_received_message_tag    $arg_tag;
if ($arg_time) {
	push_stream_last_received_message_time "$arg_time";
}

После этого воспользуйтесь методом COption::SetOptionString:

COption::SetOptionString("pull", "nginx_headers", "N");

После этого, при подключении, все пользователи будут генерировать к серверу на один запрос меньше (это произойдет не сразу, а по мере обновления JS кода у клиента, перезапуска страницы).


14
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии