Задать вопрос
@qwerty12345123456789

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

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

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

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

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

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

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

Похожие вопросы