Возможный дубликат:
Почему плохая практика возвращает сгенерированный HTML вместо JSON? Или это?
ЕСЛИ я отправлю запрос AJAX в файл PHP, что приведет к более быстрой визуализации HTML:
У меня довольно сложная структура HTML, и это ставит время загрузки большого фрагмента HTML против того времени, когда Javascript (jQuery) должен отображать ту же структуру.
Есть ли даже окончательный ответ?
JSON – это путь . Сеть может быть огромным узким местом, в то время как javascript быстро управляет вещами. Наибольшая разница будет в медленных соединениях . И это определенно стоит разбора. Новые браузеры предлагают родной JSON , поэтому он должен быть сумасшедшим быстро .
Еще одна вещь, которую следует учитывать: innerHTML имеет множество ошибок (таблицы, формы и т. Д.). В этих случаях у вас есть много накладных расходов , чтобы заставить работать кросс-браузер . Проблемы могут возникнуть неожиданно, что делает ваше приложение менее стабильным.
JSON, однако, позволяет вам решить, хотите ли вы использовать методы innerHTML или DOM в соответствии с содержимым. Это еще одна огромная победа.
Вам нужно будет измерить время вашей ситуации, потому что ответ будет зависеть от:
Полученный сервером HTML :
Клиентский рендеринг HTML :
Это случай, когда час в лабораторных тестах перед кодированием может избавить вас от необходимости повторять все позже.
[Добавлено]
Для каждого набора измерений (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 (я думаю!)
Имейте в виду, что для пользователя то, что на самом деле имеет значение, – это не общее время, а то, на что оно похоже.
Для большинства пользователей ситуация на самом деле выглядит медленнее.
Итак, что бы вы ни делали, действительно пытайтесь получить прогрессивный рендеринг, работающий для вас, чтобы пользователь увидел что-то происходящее как можно скорее.