06.05.2015, 09:15
|
Профессор
|
|
Регистрация: 13.12.2013
Сообщений: 175
|
|
json vs plain text
добрый утро, нет, я раздел не перепутал, просто почитайте до конца и вы всё поймёте
есть самодельный скрипт комментариев который работает через ajax, реализовал в двух версиях, но не знаю какой использовать, различие между ними вот в чём:
1) после добавления комментария в базу получаем его, генерируем на сервере что-то типа этого <div class="comment"><?=$comment->comment_text?></div>, и на стороне клиента выполняем comments.innerHTML = data; где data ответ сервера
2) тут уже кодируем данные в json, и у клиента парсим его, создаём див, задаём необходимые классы, атрибуты и т п, и вставляем
насчёт скорости мне кажется первый быстрее, но это только мне так кажется, не тестировал, но меня больше волнует память, который из них требует больше памяти? возможна ли утечка? заранее спасибо
|
|
06.05.2015, 12:05
|
Профессор
|
|
Регистрация: 21.12.2012
Сообщений: 869
|
|
Ясное дело,json. Сейчас может быть это и не понятно в твоем проекте который использует небольшое кол-во пользователей, но генерация html на сервере = трата ресурсов. Такие вещи давно пора перекладывать на клиент.
Кроме того длинна одного такого несчастного коммента в данном случае не намного больше строки json, а что если генерировать целую страницу? Тогда сразу видна разница между 100500 строк html и 10-20 строк тех же данных в json, и скорости ее загрузки.
Последний раз редактировалось krasovsky, 06.05.2015 в 12:08.
|
|
06.05.2015, 12:08
|
Профессор
|
|
Регистрация: 13.12.2013
Сообщений: 175
|
|
понятно, спасибо большое)
|
|
06.05.2015, 12:41
|
Профессор
|
|
Регистрация: 13.12.2013
Сообщений: 175
|
|
а вот насчёт непосредственно js, может ли в таком случае многократный appendChild привести к утечке? или сборщик сам позаботится? так как насколько я знаю выставленный элемент остаётся в памяти пока не будет удалён через removeChild, или я где-то что-то пропустил
|
|
06.05.2015, 21:44
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
Tecvid,
не нужно никаких многократных appendChild'ов, от этого только тормозов больше. Просто все комменты в одну переменную конкатинируй и только в конце делай один единственный appendChild или innerHTML (тебе что удобнее).
|
|
07.05.2015, 09:33
|
Профессор
|
|
Регистрация: 21.12.2012
Сообщений: 869
|
|
Сообщение от Tecvid
|
а вот насчёт непосредственно js, может ли в таком случае многократный appendChild привести к утечке?
|
Я б тебе посоветовал воспользоваться js-шаблонизаторов, их дофига и больше на любой вкус и цвет. Код как правило вылизан и побрит, и самому ничего делать не надо. Только воткнуть результат в нужное место.
И опять же все зависит от нагружености проекта - в небольших можно спокойно генерить хтмл на серваке шириной с простыню, и нет никакого смысла подключать js-шаблонизаторы ради полстрочки json'а.
|
|
07.05.2015, 12:25
|
Профессор
|
|
Регистрация: 13.12.2013
Сообщений: 175
|
|
Safort,
так же не получается, не все комментарии одновременно идут, ваш вариант можно использовать для пред комментов, когла сразу загружаются несколько комментариев, но всё равно спасибо
krasovsky,
загляну иншааллах, спасибо за совет)
|
|
14.05.2015, 04:45
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
На фоне подъема компилятора, компилирования и выполнения рендер не такой страшный. Зато дебилизм js это притча во языцах блеа...
Одного только сцука null который выводится текстом "null" достаточно чтоб предать анафеме рендер на клиенте.
А потом еще начинаются извороты типа shadow dom ибо никаких еб-стартов там нет.
|
|
14.05.2015, 05:07
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
А, про жисон, а вы комбинируйте. Пихайте хтмл в жисон и одновременно всякие полезные опции типа куда вставить, что еще поменять и все такое. Я так и делаю.
Есть даже такое место
for(var att in data)
el[att]=data[att];
Прикольно?
На самом деле обозначенный выбор не вопрос технологий, а скорее заточек. Как кошатники и собачники есть клиентщики и серверщики. У каждого своя заточенная казенная часть, только и всего. Мне в 100500 раз проще выдать всю тряхомудию с сервера, потому что для клиента вообще нет никаких лайб и фрейворка, а для сервера - есть. Ну вот, а кого наоборот - то наоборот.
Последний раз редактировалось kostyanet, 14.05.2015 в 05:12.
|
|
14.05.2015, 05:16
|
Профессор
|
|
Регистрация: 23.10.2010
Сообщений: 2,718
|
|
Сообщение от krasovsky
|
в небольших можно спокойно генерить хтмл на серваке шириной с простыню
|
Не пугайте народ этими серверами. Чтобы выдать 1 в жисоне, надо поднять всю ту же самую хренату на сервере начиная с апача, хтбабсцессов, точки входа, интерпретатора-компилятора пхп, запуск, инклюды, поток, запросы к бд, запросы к бд... То есть в обороте скажем мегов 100, а выдается единичка. И думаете если выдать килобайт в обороте будет в 1000 раз больше?
Тот факт что не нужно сайт пересобирать, даже из кешей - это уже большая экономия в аяксе. Остальное - по вкусу.
Последний раз редактировалось kostyanet, 14.05.2015 в 05:18.
|
|
|
|