JSON - лучший вариант . Сеть может быть огромным узким местом , в то время как javascript быстро справляется с задачами. Наибольшая разница будет на медленных соединениях . И это однозначно стоит разобрать. Новые браузеры предлагают собственный JSON , поэтому он должен быть безумно быстрым .
Еще одна вещь, на которую следует обратить внимание: innerHTML содержит множество ошибок (таблицы, формы и т. Д.). В этих случаях у вас есть много накладных расходов , чтобы заставить его работать кроссбраузерно . Проблемы могут возникнуть неожиданно, что сделает ваше приложение менее стабильным.
JSON, однако, позволяет вам решить, хотите ли вы использовать методы innerHTML или DOM в зависимости от содержимого. Это еще одна огромная победа.
Вам нужно будет измерить время для вашей ситуации, потому что ответ будет зависеть от:
HTML-код, отображаемый на сервере :
HTML-код, отображаемый клиентом :
Это тот случай, когда час в лаборатории, выполняющий тесты перед написанием кода, может избавить вас от необходимости переделывать все позже.
[Добавлено]
Для каждого набора измерений (1, 2, 3) потребуется свой набор инструментов для сбора данных. Я бы выбрал 3 набора репрезентативных данных (наименьший, средний, наибольший), а затем для каждого набора данных сделал бы каждое из измерений, перечисленных выше. Обратите внимание, что вам не нужно (и фактически не следует) использовать ваше полное приложение - вам действительно нужен наименьший кусок кода, который будет делать то, что вы хотите. Затем я искал различия между рендерингом на сервере и клиентом и решал, что (если есть) было более важным в моем приложении.
Вы НЕ сможете измерить все возможные комбинации, но если вы выберете самый медленный браузер на самом медленном ПК, который сможете достать (например, дешевый нетбук), и будете использовать самое медленное возможное подключение к Интернету ( у вас все еще есть учетная запись коммутируемого доступа AOL для тестирования, не так ли?), которая, как правило, покажет вам худший вариант, который вас действительно волнует.
Вам нужно измерить, на быстрых и медленных компьютерах. JavaScript может занять больше времени, чем PHP + время передачи, но это зависит от скорости клиента (и скорости соединения, и скорости, которую PHP берет для создания HTML).
Вероятно, окончательного ответа нет. Но учтите, что хотя с точки зрения запросов AJAX, возвращающий JSON, легче, чем запрос всей страницы с помощью PHP. Обработка JSON-запроса и обновление компонентов страницы требует более высокой управленческой нагрузки.
Рассматривали ли вы гибрид? AJAX-запросы, когда PHP возвращает небольшие фрагменты HTML.
Больше всего зависит от типа сайта imo.
Например, было бы справедливо предположить, что «технический» сайт будут посещать люди с более быстрыми компьютерами, использующими приличные браузеры с быстрым подключением.
Если вам нужно поддерживать IE6, я бы опасался слишком большого количества javascript, но это то, что нужно действительно протестировать.
Обычно я обычно рендерю на сервере, это проще, но опять же, я обычно делаю сайты интрасети с низкой нагрузкой!
Это действительно будет зависеть от того, какие данные вы передаете .. Если у вас есть статический HTML элементы во внешнем интерфейсе, которые вам нужно только заполнить значениями, JSON - самое быстрое и простое решение. Для этого существует много-много-много клиентских JS-библиотек. Если это ваше требование, знайте, что при таком подходе ваш HTML-код уже существует, либо на странице, либо в памяти клиента в качестве шаблона (в зависимости от того, как вы его используете)
Что касается другого варианта, я бы предложил вы делаете это только в том случае, если у вас есть очень ... "сложный" или действительно зависящий от сервера HTML, который может генерировать только сервер ... или если вы встраиваете HTML из другого места, которое доставляет HTML.
Скорость генерации ответа полностью зависит от вашего сервера и способа его программирования. Поскольку JSON меньше, он обычно быстрее, и существует множество библиотек JSON для всех видов внутреннего программирования ..
Я думаю, вам стоит изучить некоторые из наиболее ориентированных на пользовательский интерфейс JS-фреймворков
Я бы выбрал вариант #2 - так меньше нагрузка на сервер и браузер клиента выполняет всю работу. Это также намного быстрее, потому что передается меньше данных.
Помните, что для пользователя важно не общее время, а то, как оно выглядит для него.
Для большинства пользователей ситуация А покажется более медленной.
Поэтому, что бы вы ни делали, постарайтесь, чтобы прогрессивный рендеринг работал на вас, чтобы пользователь видел, что что-то происходит как можно быстрее.
Об этом упомянул Николас Закас из Yahoo в своем выступлении / выступлении на Velocity 2010
, похоже, вам нравится производительность javascript, поэтому стоит проверить слайды / PDF-файлы.
включает материал Стива Саундерса и множество людей, о которых я никогда не слышал:
http://en.oreilly.com/velocity2010
редактировать: если я правильно помню, обычно лучше было бы HTML из-за медленного синтаксического анализа json в IE (я думаю!)
Сначала вам нужно сравнить размер в байтах JSON и HTML.
Если JSON не намного меньше, то просто отправьте HTML. Использование innerHTML JavaScript для вставки HTML-фрагмента в страницу происходит очень быстро. Построение дерева DOM из некоторого JSON будет медленнее.
В конечном итоге разница во времени для пользователя, скорее всего, будет незначительной, если только объем JSON/HTML не является действительно огромным.