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

Примеры оптимизации JS кода

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

Разработчики не очень часто задумываются над количеством хитов, когда делают инструмент которым сами не пользуются и не арендуют мощности под это. Они оставляют этот момент на откуп клиентам: "Купят по мощнее сервер и все залетает". Однако профессионализм разработчика состоит в том, чтобы уметь видеть все последствия своих трудов и уметь выбирать решения оптимальные не только для него, как программиста, но и для клиента.

Где искать ошибку в ajax обработчике при POST запросах

Пример уменьшения количества хитов рассмотрим на основе десктоп мессенджера Битрикс24.

Специфика этого инструмента такова, что он может выдавать просто запредельное количество хитов, ни один другой инструмент Bitrix Framework ни делает даже половины хитов мессенджера.

На Битрикс24 количество пользователей росло чуть ли не по экспоненте, количество хитов тоже, и наступил критичный момент когда игнорировать такие цифры стало нельзя:

Анализ лога по хитам выявил следующую проблему: в логе было только название обработчика, так как все данные отправлялись POST запросом на сервер. Логировать POST запросы вещь не очень приятная, поэтому нужно было искать другое решение что бы понять легальные ли это запросы или все таки паразитные.

Решение очень простое: это GET метки. Достаточно выполнять запрос вместе с GET меткой: im.ajax.php?GET_HISTORY, im.ajax.php?UPDATE_STATE и так далее.

По этим меткам получилось группировать запросы к серверу и выявить узкие места.

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

После всех этих операций получились вот такие показатели:


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

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