Влияние на производительность нескольких вызовов GET по сравнению с более сложным запросом POST / GET к AJAX в JSON с сервера - PullRequest
3 голосов
/ 06 июля 2010

Я работаю над сайтом, на котором интерфейс работает на AJAX, взаимодействуя с сервером обычным способом RESTful и получая ответы в виде JSON.

Достаточно просто управлять POST, DELETE и PUTзапросы, так как они не будут отличаться от традиционного подхода.Задача заключается в получении контента.Иногда клиент должен получить один ресурс с сервера.Иногда больше.

Есть ли проблема с производительностью при асинхронном запуске каждого отдельного запроса GET и заполнении элементов DOM по мере поступления ответов?

Я так себе представляю (но поправьте меня, если я ошибаюсь), и что повышение производительности возможно, скажем, путем предоставления массива запросов API в одном запросе, и чтобы сервер отвечал соответствующимJSON массив ответов.

POST, DELETE и PUT семантически неверны для такого рода задач.Кроме того, запрос GET кажется неправильным.В конце концов, отправка запроса GET на /ajax_handler?q=get_users,get_pages,get_current_user выглядит довольно странно, поскольку я привык видеть запрос GET как запрос отдельного ресурса.

Еще одна альтернатива - это просто подготовить все соответствующие данные длякаждый запрос GET (как вы делаете на обычной не AJAX-странице) и соберите все вместе, оставляя возможность выяснить, что важно / ново для клиента, возможно, с помощью последнего измененного элемента в каждом массиве JSON.

Из-за боязни быть закрытым как субъективным, мой конкретный вопрос заключается в том, существует ли семантически идеальный способ использовать один запрос GET для получения нескольких, только отдаленно связанных частей данных с сервера, или же стоит ли выигрыш в производительности?

1 Ответ

1 голос
/ 06 июля 2010

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

Кроме того, повторное подключение к пользовательскому интерфейсу вызовет проверку подлинности, а также может увеличить нагрузку на вашу БД как для состояния ASP.NET, если вы используете для этого БД, так и для извлечения отдельных ресурсов, если вы не ' Re кеширование результатов где-то. Кэширование только для поддержки болтливого интерфейса увеличит нагрузку на память на ваших серверах и может привести к перегрузке в периоды высокой нагрузки.

Мало того, вы можете платить за дополнительную пропускную способность, которая не имеет отношения к самому запросу (то есть заголовкам пакетов TCP / IP), который будет увеличиваться пропорционально тому, насколько болтливой является ваша система.

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