Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   json vs plain text (https://javascript.ru/forum/events/55599-json-vs-plain-text.html)

Tecvid 06.05.2015 09:15

json vs plain text
 
добрый утро, нет, я раздел не перепутал, просто почитайте до конца и вы всё поймёте :)

есть самодельный скрипт комментариев который работает через ajax, реализовал в двух версиях, но не знаю какой использовать, различие между ними вот в чём:
1) после добавления комментария в базу получаем его, генерируем на сервере что-то типа этого <div class="comment"><?=$comment->comment_text?></div>, и на стороне клиента выполняем comments.innerHTML = data; где data ответ сервера

2) тут уже кодируем данные в json, и у клиента парсим его, создаём див, задаём необходимые классы, атрибуты и т п, и вставляем

насчёт скорости мне кажется первый быстрее, но это только мне так кажется, не тестировал, но меня больше волнует память, который из них требует больше памяти? возможна ли утечка? заранее спасибо

krasovsky 06.05.2015 12:05

Ясное дело,json. Сейчас может быть это и не понятно в твоем проекте который использует небольшое кол-во пользователей, но генерация html на сервере = трата ресурсов. Такие вещи давно пора перекладывать на клиент.

Кроме того длинна одного такого несчастного коммента в данном случае не намного больше строки json, а что если генерировать целую страницу? Тогда сразу видна разница между 100500 строк html и 10-20 строк тех же данных в json, и скорости ее загрузки.

Tecvid 06.05.2015 12:08

понятно, спасибо большое)

Tecvid 06.05.2015 12:41

а вот насчёт непосредственно js, может ли в таком случае многократный appendChild привести к утечке? или сборщик сам позаботится? так как насколько я знаю выставленный элемент остаётся в памяти пока не будет удалён через removeChild, или я где-то что-то пропустил

Safort 06.05.2015 21:44

Tecvid,
не нужно никаких многократных appendChild'ов, от этого только тормозов больше. Просто все комменты в одну переменную конкатинируй и только в конце делай один единственный appendChild или innerHTML (тебе что удобнее).

krasovsky 07.05.2015 09:33

Цитата:

Сообщение от Tecvid
а вот насчёт непосредственно js, может ли в таком случае многократный appendChild привести к утечке?

Я б тебе посоветовал воспользоваться js-шаблонизаторов, их дофига и больше на любой вкус и цвет. Код как правило вылизан и побрит, и самому ничего делать не надо. Только воткнуть результат в нужное место.

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

Tecvid 07.05.2015 12:25

Safort,
так же не получается, не все комментарии одновременно идут, ваш вариант можно использовать для пред комментов, когла сразу загружаются несколько комментариев, но всё равно спасибо :)

krasovsky,
загляну иншааллах, спасибо за совет)

kostyanet 14.05.2015 04:45

На фоне подъема компилятора, компилирования и выполнения рендер не такой страшный. Зато дебилизм js это притча во языцах блеа...

Одного только сцука null который выводится текстом "null" достаточно чтоб предать анафеме рендер на клиенте.

А потом еще начинаются извороты типа shadow dom ибо никаких еб-стартов там нет.

kostyanet 14.05.2015 05:07

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

Есть даже такое место

for(var att in data)
  el[att]=data[att];


Прикольно? :)

На самом деле обозначенный выбор не вопрос технологий, а скорее заточек. Как кошатники и собачники есть клиентщики и серверщики. У каждого своя заточенная казенная часть, только и всего. Мне в 100500 раз проще выдать всю тряхомудию с сервера, потому что для клиента вообще нет никаких лайб и фрейворка, а для сервера - есть. Ну вот, а кого наоборот - то наоборот.

kostyanet 14.05.2015 05:16

Цитата:

Сообщение от krasovsky
в небольших можно спокойно генерить хтмл на серваке шириной с простыню

Не пугайте народ этими серверами. Чтобы выдать 1 в жисоне, надо поднять всю ту же самую хренату на сервере начиная с апача, хтбабсцессов, точки входа, интерпретатора-компилятора пхп, запуск, инклюды, поток, запросы к бд, запросы к бд... То есть в обороте скажем мегов 100, а выдается единичка. И думаете если выдать килобайт в обороте будет в 1000 раз больше?

Тот факт что не нужно сайт пересобирать, даже из кешей - это уже большая экономия в аяксе. Остальное - по вкусу.


Часовой пояс GMT +3, время: 08:10.