@kofon
Я человек

Что лучше грузить Ajax'ом?

Ситуация такая:
Допустим есть какая-то информация, которую хочется грузить динамически. Пусть это - футболка, со своим называнием, цветом, ценой и т. д.

Теперь два варианта:
1) Грузить HTML код вместе с инфой.
Где с сервера возвратиться примерно такой текст:
<div class="t-short">
  <div class="name" >Cool T-Short</div>
  <div class="price">1000</div>
  <div class="color">Red</div>
</div>


2) Или получать JSON
Где вернётся:
{name:"Cool T-Short", price: 1000, color: "Red"}
Всё это распарсить и создать теги через JS

Очевидно второй вариант быстрее работает (и меньше напрягает сервер).
Мы получаем мало байт, а JS сделает всё за миг (меньше 1 мл. сек)

Но есть некоторые недостатки, а именно, JavaScript управляет структурой документа, и очень сильно её меняет.
Если нужно будет дописать куда-нибудь класс или как-то изменить структуру, придётся лезть в скрипт.

Удобнее тут первый, но очень ли тяжело будет поддерживать, если использовать второй вариант?
Какой же вариант лучше?
  • Вопрос задан
  • 324 просмотра
Пригласить эксперта
Ответы на вопрос 3
baskerville42
@baskerville42
Учусь работать (Junior)
Помните всегда про MVC. V = вьюхи в данном случае у вас будут на клиенте и там html и должен генерироваться. На сервере очень и очень плохая практика генерировать разметку.
Есть одна ситуация когда разумно отдавать с сервера как JSON так и готовую страницу, но эта техника используется тогда, когда у Вас динамически подгружаемый контент и вам нужно ещё и SEO.
Ответ написан
Имхо, второй. Например, позже может оказаться, что данные надо пересылать и в мобильное приложение, или нужна другая вёрстка с теми же данными для мобильной версии сайта, или нужно использовать данные на другом сайте, или ещё что-нибудь. Если Вы отдаёте JSON, возможности применения неограниченны, чего нельзя сказать о первом способе -- когда Вы отдаёте готовый HTML.

Впрочем, это всё-так зависит от конкретной ситуации. Если данных слишком много, то мб имеет смысл генерить HTML на сервере, чтобы не нагружать браузер.
Ответ написан
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Почти всегда для конечного пользователя вариант с передачей готового html быстрее, чем рендеринг на клиенте. Передача по сети нескольких десятков или сотен байт абсолютно незаметна, по отношению ко всем остальным процессам, учавствующим во всей процедуре, а сервер сконкатенирует строки гораздо быстрее, чем JS будет ходить туда сюда по дереву DOM и вставлять это всё + json encode/decode.
Поэтому тут выбор "быстрее и проще" (server render) или "солиднее, труднее и современнее" (client render).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы