@qwerty12345123456789

Как избежать множества AJAX запросов при написании приложения?

Простой пример, когда делается приложение работающее с бд, то оно делает ajax запрос через xhr или fetch в js, другого вроде бы ничего нету (в js), запрос отправляется какому-либо скрипту PHP или ASP и др . Суть в том что вся работа делается через ajax , но если не учитывать (не) приложения которые отправляют данные через тег который перезагружает страницу. Так приходится создавать разные функции для сбора информации из тегов типа , есть какой то способ это сделать так чтобы не приходилось для каждой отдельной формы html писать код на js для запроса ? Иначе выходит так, что для каждой отдельной функции приходится писать 1-2 функции для сбора данных из тегов, так как еще может быть разная "вложенность" тегов html , из-за этого приходится обращаться по классам или селекторам функциями типа querySelector\getElementByClass\getElementById и др. иначе никак. Вопрос в том что получается много разных xhr функций, из-за того что разные уровни вложенности html тегов и парсинг данных из этих тегов, один тег может быть вложен в 10 div блоков, другой в 2 и т.д.
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
@rPman
Много мелких запросов к серверу?

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

Второе - объединяйте запросы в один, так не совсем правильно но переделать ваш текущий код будет просто - можно подменить ваши запросы ajax на асинхронные к вашему методу, т.е. вместо $('selector').text($.get('data_url')) делайте вызов метода по завершению запроса что то типа
my_async_get('data_url',function(result){$(selector).text(result);})
а этот метод вместо исполнения запроса, должен собирать их в массив и по какому то условию (временной интервал или собрав некоторое их количество, или, к примеру, последний запрос в цепочке, всегда можно выделить такой для каждого сценария или даже создать искусственно) делать один запрос на сервер, который выглядит как просто список запросов, и возвращать он должен список ответов (есть практика каждый запрос снабжать уникальным идентификатором, чтобы идентифицировать им ответ по каждому).

Еще вариант - он исходит из вопроса, чем вам не нравится множество отдельных ajax? если только из-за проблем в производительности, то подумафйте о смене протокола веб сервера, на http3 или к примеру websocket, у них на повторный запрос к вебсерверу не тратится лишнее время.

Так же причиной тормозов может оказаться сам веб сервер, в устаревшей http rest архитектуре веб сервер на каждый запрос собирает кучу информации, которая может или нет понадобиться для ответа, и это сильно тормозит работу всего приложения, способы решения этой множество но в общем - это исключить повторный бесполезный сбор данных (к примеру если будете реализовывать websocket сервер, эта проблема решится сама собой).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы