Сколько данных должен получить один вызов JSON? - PullRequest
6 голосов
/ 08 октября 2011

При получении списка элементов с помощью вызова json лучше использовать несколько небольших вызовов (для получения необходимой информации) или один большой вызов со всеми данными.

Например, у вас есть вызов json, чтобы получить список книг, соответствующих определенному ключевому слову title. Есть 100 результатов. Вы отображаете данные в разбивке по страницам - 10 результатов на «страницу». Является ли более эффективным сделать один звонок и получить все результаты или сделать звонок для следующих 10 на каждой странице?

Я полагаю, что это частично определяется тем, сколько результатов. Если это какое-то огромное число, второй вариант кажется очевидным. Но какой хороший предел для количества, которое вы можете получить за один звонок - 100, 1000, 10000 единиц?

Ответы [ 2 ]

1 голос
/ 08 октября 2011

Как правило, каждый ajax-вызов имеет накладные расходы, и уменьшение количества различных вызовов повышает производительность ... если данные не велики ...

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

0 голосов
/ 08 октября 2011

Это зависит.

Очевидно, вы хотите свести к минимуму использование полосы пропускания, но есть также издержки для каждого отдельного вызова. Вы должны будете сделать некоторые обоснованные предположения, самое главное: насколько вероятно, что вам понадобятся данные со страниц 2 до 100?

Если это очень вероятно (скажем, в 90% случаев пользователи будут переходить по многим страницам одного и того же набора результатов), то я бы скачал весь результат за один раз, но в противном случае, я бы загружайте отдельные страницы по ходу работы.

Еще одна вещь, которую нужно иметь в виду, это задержка. Каждый вызов ajax имеет определенную задержку, зависящую от расстояния (в топологии сети, не обязательно географического) между клиентом и сервером. Для первой загрузки задержка неизбежна, но после этого вам нужно спросить себя, важен ли быстрый ответ. При нормальных обстоятельствах это ожидаемо и приемлемо, но если ваш типичный вариант использования предполагает многократное переключение между страницами, то это может стать неудобством, и вы можете подумать о покупке snappiness для более длительного начального времени загрузки.

Если вы хотите загрузить несколько страниц, но набор результатов слишком велик (скажем, тысячи или миллионы страниц), вы можете подумать о более сложных схемах, например, загрузить запрошенную страницу и следующие 10 или загрузить запрошенную страницу немедленно, а затем предварительно выберите следующие 10 страниц в фоновом режиме.

...