Мудрый производительностью: запросите JSON и рендеринг в JS, или запросите весь HTML? [дубликат]

13
задан Community 23 May 2017 в 12:04
поделиться

10 ответов

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

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

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

1
ответ дан 2 December 2019 в 02:18
поделиться

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

HTML-код, отображаемый на сервере :

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

HTML-код, отображаемый клиентом :

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

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

[Добавлено]

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

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

2
ответ дан 2 December 2019 в 02:18
поделиться

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

0
ответ дан 2 December 2019 в 02:18
поделиться

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

Рассматривали ли вы гибрид? AJAX-запросы, когда PHP возвращает небольшие фрагменты HTML.

0
ответ дан 2 December 2019 в 02:18
поделиться

Больше всего зависит от типа сайта imo.

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

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

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

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

0
ответ дан 2 December 2019 в 02:18
поделиться

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

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

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

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

0
ответ дан 2 December 2019 в 02:18
поделиться

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

0
ответ дан 2 December 2019 в 02:18
поделиться

Помните, что для пользователя важно не общее время, а то, как оно выглядит для него.

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

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

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

0
ответ дан 2 December 2019 в 02:18
поделиться

Об этом упомянул Николас Закас из Yahoo в своем выступлении / выступлении на Velocity 2010

, похоже, вам нравится производительность javascript, поэтому стоит проверить слайды / PDF-файлы.

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

http://en.oreilly.com/velocity2010

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

0
ответ дан 2 December 2019 в 02:18
поделиться

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

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

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

0
ответ дан 2 December 2019 в 02:18
поделиться
Другие вопросы по тегам:

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