Intereting Posts

Производительность: запрос JSON и визуализация в JS или запрос всего HTML?

Возможный дубликат:
Почему плохая практика возвращает сгенерированный HTML вместо JSON? Или это?

ЕСЛИ я отправлю запрос AJAX в файл PHP, что приведет к более быстрой визуализации HTML:

  1. Отправка полностью отформатированного HTML прямо из PHP или:
  2. Просто отправьте данные JSON и пусть Javascript выполняет рендеринг HTML?

У меня довольно сложная структура HTML, и это ставит время загрузки большого фрагмента HTML против того времени, когда Javascript (jQuery) должен отображать ту же структуру.

Есть ли даже окончательный ответ?

JSON – это путь . Сеть может быть огромным узким местом, в то время как javascript быстро управляет вещами. Наибольшая разница будет в медленных соединениях . И это определенно стоит разбора. Новые браузеры предлагают родной JSON , поэтому он должен быть сумасшедшим быстро .

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

JSON, однако, позволяет вам решить, хотите ли вы использовать методы innerHTML или DOM в соответствии с содержимым. Это еще одна огромная победа.

Вам нужно будет измерить время вашей ситуации, потому что ответ будет зависеть от:

Полученный сервером HTML :

  1. Количество времени, необходимого на сервере для форматирования данных как HTML, при низких и высоких нагрузках.
  2. Время, необходимое для перемещения форматированного HTML на клиент, при низких и высоких нагрузках.
  3. Время, необходимое для перерисовки страницы с отформатированным HTML на клиенте, для медленных и быстрых клиентов и браузеров.

Клиентский рендеринг HTML :

  1. Время, необходимое на сервере для форматирования данных как JSON, при низких и высоких нагрузках.
  2. Время, необходимое для перемещения данных JSON клиенту при низких и высоких нагрузках.
  3. Время, необходимое клиенту для отображения HTML из данных JSON, для медленных и быстрых клиентов и браузеров.

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

[Добавлено]

Для каждого набора измерений (1, 2, 3) потребуется другой набор инструментов для захвата данных. Я бы выбрал 3 набора репрезентативных данных (самый маленький, средний, самый большой), а затем для каждого набора данных сделайте каждое из перечисленных выше измерений. Обратите внимание, что вам не нужно (и на самом деле не должно) использовать ваше полное приложение – вы действительно просто хотите, чтобы самый маленький фрагмент кода сделал то, что вы хотите. Затем я буду искать различия между обработанными сервером и рендерингом клиента и решить, какой из них (если есть) был более важным в моем приложении.

Вы не сможете измерить каждую возможную комбинацию, но если вы выберете самый медленный браузер на самом медленном ПК, вы можете положиться (например, дешевый нетбук) и использовать самое медленное интернет-соединение (у вас есть все еще есть учетная запись автоответчика AOL для тестирования, верно?), которая будет показывать вам худший случай, что вас действительно волнует.

Я бы сказал, # 2 – таким образом, он накладывает меньше нагрузки на ваш сервер и позволяет браузеру клиента выполнять эту работу. Это намного быстрее, потому что оно переносит меньше данных.

Вам нужно измерять на быстрых и медленных компьютерах. JavaScript может занять больше времени, чем PHP + время передачи, но это зависит от скорости клиента (и скорости соединения, а также скорости PHP для создания HTML).

Наверное, нет окончательного ответа. Но учтите, что хотя с точки зрения запроса AJAX, возвращающий JSON, легче, чем запрашивать всю страницу с PHP. Обработка запроса JSON и обновление компонентов страницы имеют более высокую нагрузку на управление.

Вы считали гибрид? AJAX запрашивает, где PHP возвращает небольшие куски HTML.

Сначала вам нужно сравнить размер в байтах JSON и HTML.

Если JSON не намного меньше, просто отправьте HTML. Использование innerHTML JavaScript для размещения фрагмента HTML на странице происходит очень быстро. Построение дерева DOM из некоторого JSON будет медленнее.

В конечном счете разница во времени для пользователя, вероятно, будет незначительной, если количество JSON / HTML не будет действительно огромным.

Зависит от типа сайта больше, чем что-либо еще.

  • Нужно ли вам грациозно разлагаться?
  • Какие браузеры могут использовать вашу целевую аудиторию?
  • Какими могут быть связи?
  • Сколько будет хитов на сайте?

Например, можно с честью предположить, что сайт «tech» будет посещать люди с более быстрыми компьютерами, используя приличные браузеры с быстрыми подключениями.

Если вам нужно поддерживать IE6, я бы опасался слишком большого количества javascript, но это то, что нужно протестировать на самом деле.

Я обычно делаю на сервере вообще, его просто проще, но опять же я делаю сайты с низкой загрузкой внутри сети вообще!

Это будет действительно зависеть от того, какие данные вы передаете. Если у вас есть статические элементы HTML на передней панели, вам нужно всего лишь заполнить значения, JSON – это самое быстрое и простое решение. Для этого существует множество, много, много клиентских JS-библиотек. Если это ваше требование, знайте, что при таком подходе ваш HTML уже существует либо на странице, либо в памяти клиента в качестве шаблона (в зависимости от того, как вы его скриптируете)

Что касается другого варианта, я бы посоветовал вам сделать это только в том случае, если у вас есть очень … «сложный» или действительно зависящий от сервера HTML, который может генерировать только сервер … или если вы внедряете HTML из другого места, который поставляет HTML ,

Скорость генерации ответа полностью зависит от вашего сервера и того, как он запрограммирован. Поскольку JSON меньше, он, как правило, быстрее, и есть множество библиотек JSON для всех вариантов фонового программирования.

Я думаю, вы должны изучить некоторые из более ориентированных на пользовательский интерфейс JS-инфраструктур

Это было упомянуто Николасом Закасом из Yahoo в его статье / разговоре на Velocity 2010,

это звучит так, как будто вы используете производительность javascript, поэтому стоит проверить слайды / pdf.

включает в себя материал от Steve Sounders и массу людей, о которых я никогда не слышал:

http://en.oreilly.com/velocity2010

edit: если я правильно помню, то вывод был html, как правило, лучше из-за медленного разбора IE IE (я думаю!)

Имейте в виду, что для пользователя то, что на самом деле имеет значение, – это не общее время, а то, на что оно похоже.

  • Ситуация A) Пользователь нажимает кнопку, ничего не происходит в течение 2 секунд, затем загрузка данных.
  • Ситуация B) Пользователь нажимает кнопку, она говорит «подождите» или что-то еще, затем данные загрузятся через 3 секунды.

Для большинства пользователей ситуация на самом деле выглядит медленнее.

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