[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Формирование HTML на сервере
vital
Давайте подискутируем, насколько это хорошо? можно так делать или нет?
Есть некая страничка, вебдванольная по самые гланды, все там красиво открывается\грузится, никаких перезагрузок страниц. И есть там грид(таблица), который надо пагинировать, показывая за раз Н элементов, при том что размер этих Н элементов может быть достаточно высок=>сожрет дофига памяти браузера.

Собственно 2 варианта решения.
Шлем запрос на сервер, получаем json, таблицу формируем ручками яваскриптом. Будь то строкой и делаем $('div').html(string_wth_html);
будь то Дом объектами(дайте кстати кто ссылку на ман какой-нить. Стыдно признаться но никогда не пользовался)

Минусы - серверная часть зависит от дизайна, у клиента есть риск подтормозить браузер, дольше показывается.

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

Дополняйте, чо.



Спустя 25 минут, 9 секунд (17.11.2011 - 18:19) inpost написал(а):
vital
А смысл этого?

Спустя 10 минут, 38 секунд (17.11.2011 - 18:29) vital написал(а):
Цитата (inpost @ 17.11.2011 - 17:19)
vital
А смысл этого?

Хочу сделать для себя выводы, как стоит делать а как нет.

Спустя 1 минута, 37 секунд (17.11.2011 - 18:31) inpost написал(а):
vital
После обработки php сервер сам формирует html. Смысл тебе этого делать я не понимаю, что добиться хочешь.

Спустя 1 минута, 55 секунд (17.11.2011 - 18:33) vital написал(а):
Цитата (inpost @ 17.11.2011 - 17:31)
vital
После обработки php сервер сам формирует html. Смысл тебе этого делать я не понимаю, что добиться хочешь.

1. У меня не пхп. Вопрос абстрагирован от языка.
2. Каким это образом массив выбранный из бд, станет автоматически таблицей в хтмл?
Напомню, что запрос аяксовый.

Спустя 2 часа, 53 минуты, 14 секунд (17.11.2011 - 21:26) VolDroN написал(а):
смысл нагружать сервер и нагружать канал лишним трафиком?
скорее сервер умрёт от нагрузки, чем браузер

Спустя 4 минуты, 47 секунд (17.11.2011 - 21:31) vital написал(а):
Цитата
скорее сервер умрёт от нагрузки, чем браузер

Здравая мысль(

Спустя 4 часа, 3 минуты, 18 секунд (18.11.2011 - 01:34) Invis1ble написал(а):
vital
недавно тоже задался подобным вопросом, пока что остановился на варианте с формированием html на стороне сервера и подгрузкой аяксом html в контейнер, при этом данные получаю в json и одним из свойств объекта может быть content. Фронтенд на основе ответа делает вывод, что ему делать дальше - если существует свойство content - вставляет его в контейнер, если нет - дальнейшая обработка в зависимости от остальных свойств json-объекта. Не самое элегантное решение, но в данном конкретном случае - думаю оправдано, поскольку content возвращается довольно редко. Формирование html средствами фронтенда решил не использовать, т.к. как-то муторно это слишком, и для каждого запроса необходимо писать отдельный сценарий обработки ответа.
Как-то так. Жду умных и интересных постов по теме.

Спустя 37 минут, 6 секунд (18.11.2011 - 02:11) vital написал(а):
Цитата (Invis1ble @ 18.11.2011 - 00:34)
vital
недавно тоже задался подобным вопросом, пока что остановился на варианте с формированием html на стороне сервера и подгрузкой аяксом html в контейнер, при этом данные получаю в json и одним из свойств объекта может быть content. Фронтенд на основе ответа делает вывод, что ему делать дальше - если существует свойство content - вставляет его в контейнер, если нет - дальнейшая обработка в зависимости от остальных свойств json-объекта. Не самое элегантное решение, но в данном конкретном случае - думаю оправдано, поскольку content возвращается довольно редко. Формирование html средствами фронтенда решил не использовать, т.к. как-то муторно это слишком, и для каждого запроса необходимо писать отдельный сценарий обработки ответа.
Как-то так. Жду умных и интересных постов по теме.

ВОт и я решил, что все-таки проще формировать хтмл на сервере и грузить в контейнер.

Вероятность забить канал под нагрузкой мала, ибо не главная и не оч основная страница, а кол-во геммороя уменьшается в разы.
На сервере сделал отдельные ф-и для генерилки хтмла в духе getContactsHtml(contacts_array_from_db);
Вроде работает wink.gif
Пришлось только еще лайвом навешивать обработчик на 1 кнопку(вернее, несколько, по одной на каждую строку), ну да ладно.

Спустя 3 часа, 31 минута, 15 секунд (18.11.2011 - 05:42) inpost написал(а):
Я что-то всё равно не понимаю, каким образом обойти php и обратиться к БД? Расскажите.

Спустя 9 минут, 7 секунд (18.11.2011 - 05:52) vital написал(а):
Цитата (inpost @ 18.11.2011 - 04:42)
Я что-то всё равно не понимаю, каким образом обойти php и обратиться к БД? Расскажите.

Не тупи.

Спустя 1 час, 33 минуты, 5 секунд (18.11.2011 - 07:25) inpost написал(а):
vital
Просто гениальный ответ.

Спустя 1 час, 33 минуты, 12 секунд (18.11.2011 - 08:58) Michael написал(а):
Я столкнулся с подобным на одном проекте ранее. Тоже все на аяксе и без перезагрузки страницы. Но надо подгрузить вначале в браузер справочники(id->Название) чтобы потом поисковые запросы чисто id-шками слать и получать в них же ответ.
Так вот эти справочники были по 8000 позиций и более. Все мои пробы убыстрить свелись к одному - полностью готовый хтмл(список ul) формирую на сервере и чисто innerHTML останется. Да, избыток некий текста в ответе, за счет тегов.
Но пробовал json-ом массив передавать и на js уже поэлементно вставлять - вообще тихий ужас, и даже если хтмл формируешь из него для вставки один раз - очень все браузеры тупят. Хром и опера - еще ладно, а ie - замирал конкретно. Несравнимо в общем с первым вариантом.

Спустя 3 часа, 29 минут, 57 секунд (18.11.2011 - 12:28) sebastjan написал(а):
Не знаю правильно ли я понял тему, на мой взляд оптимальней передать весь ХТМЛ на броузер клиенту а данные подгружать в зависимости от условий ЯваСкрипт при помощи XMLHTTPRequest сылка =>xmlhttprequest.ru
vital
Ты про этот обьек спрашивал кажеться.

Спустя 18 минут, 38 секунд (18.11.2011 - 12:46) sergeiss написал(а):
Цитата (vital @ 18.11.2011 - 06:52)
Не тупи.

Цитата (inpost @ 18.11.2011 - 08:25)
vital
Просто гениальный ответ.

Народ, давайте не будем пререкаться не по теме, ОК?

inpost - вопрос на самом деле был не про ПХП smile.gif Ведь в аяксовом запросе можно указать не только ПХП-скрипт, но и скрипт на любом языке. Главное то, что мы получим в итоге, что будет отправлено клиенту. Так что вопрос был поставлен весьма корректно.

Спустя 4 часа, 9 минут, 33 секунды (18.11.2011 - 16:56) ApuktaChehov написал(а):
Вообще, странно, что формирование таблицы JS занимает столько времени.
Ну разве что она офигенно большая. Вообще мне стало очень интересно и я провел тест и вот что вышло.

Таблица из 100 строк, в каждой из которых по 19 ячеек сформировалась за 25ms.
Такой результат показал FF. Что касаемо IE8 то он показывает похожий результат, но при этом визуально задумывается примерно в 2.5-3 раза дольше FF. Правда все это без использования JSON. Насколько это тяжелая штука не знаю, я по жизни влюблен в XML wink.gif

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

Спасибо за внимание.

Спустя 46 минут, 33 секунды (18.11.2011 - 17:42) vital написал(а):
Цитата (ApuktaChehov @ 18.11.2011 - 15:56)
Вообще, странно, что формирование таблицы JS занимает столько времени.
Ну разве что она офигенно большая. Вообще мне стало очень интересно и я провел тест и вот что вышло.

Таблица из 100 строк, в каждой из которых по 19 ячеек сформировалась за 25ms.
Такой результат показал FF. Что касаемо IE8 то он показывает похожий результат, но при этом визуально задумывается примерно в 2.5-3 раза дольше FF. Правда все это без использования JSON. Насколько это тяжелая штука не знаю, я по жизни влюблен в XML wink.gif

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

Спасибо за внимание.

А теперь загрузите уже готовый хтмл просто с сервера.
Разница во времени в сколько раз?

Спустя 1 час, 37 минут, 6 секунд (18.11.2011 - 19:20) sergeiss написал(а):
Переместил тему в другой раздел, т.к. в "Конкурсах" ей точно нечего делать.


_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.