Большое количество одновременных вызовов AJAX и способы их устранения - PullRequest
0 голосов
/ 04 мая 2011

У меня есть веб-страница, которая при загрузке должна выполнять много JSON-выборок с сервера, чтобы динамически заполнять различные объекты. В частности, он обновляет части структуры данных большого размера, из которой я получаю графическое представление данных.

Так что он отлично работает в Chrome; однако Safari и Firefox, похоже, несколько пострадали После запроса многочисленных запросов JSON браузеры становятся вялыми и непригодными для использования. Я предполагаю, что это связано с довольно дорогой итерацией указанной структуры данных. Это правильное предположение?

Как я могу смягчить это без изменения языка запроса так, чтобы это был один выбор?

Я думал о применении очереди, которая могла бы ограничить количество одновременных запросов Ajax (и, следовательно, также ограничить количество одновременных обновлений структуры данных) ... Есть мысли? Полезные указатели? Другие предложения?

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

В JS на стороне браузера создайте оболочку для jQuery.post () (или любого другого метода, который вы используете) который добавляет запросы в очередь.
Также создайте функцию 'queue_send', которая будет фактически вызывать jQuery.post (), передавая всю структуру очереди.

На сервере создайте прокси-функцию с именем «queue_receive», которая воспроизводит JSON для интерфейсов вашего сервера, как если бы он поступил из браузера, собирает результаты в один ответ и отправляет обратно в браузер. Queue_send_success () на стороне браузера (обработчик успеха для queue_send) должен декодировать этот ответ и заполнить вашу структуру данных.

При этом вы сможете сократить трафик инициализации до одного фактического запроса и, возможно, объединить некоторые другие запросы на вашем сайте.

0 голосов
/ 04 мая 2011

в частности, он обновляет части большой структуры данных, из которой я получаю графическое представление данных.

Я бы попробовал:

  • Очередь ответов по мере их поступления, затем один раз обновить структуру
  • Скрытие представления невидимым, пока ответы не будут в

Ответ Волшебника также хорош - но я не уверен, что он соответствует вашему определению « без изменения языка запроса, чтобы он был единственной выборкой» - это позволит избежать реинжиниринг существующей логики.

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