Есть некая страничка, вебдванольная по самые гланды, все там красиво открывается\грузится, никаких перезагрузок страниц. И есть там грид(таблица), который надо пагинировать, показывая за раз Н элементов, при том что размер этих Н элементов может быть достаточно высок=>сожрет дофига памяти браузера.
Собственно 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. Смысл тебе этого делать я не понимаю, что добиться хочешь.
После обработки 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 средствами фронтенда решил не использовать, т.к. как-то муторно это слишком, и для каждого запроса необходимо писать отдельный сценарий обработки ответа.
Как-то так. Жду умных и интересных постов по теме.
недавно тоже задался подобным вопросом, пока что остановился на варианте с формированием 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);
Вроде работает
Пришлось только еще лайвом навешивать обработчик на 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 - замирал конкретно. Несравнимо в общем с первым вариантом.
Так вот эти справочники были по 8000 позиций и более. Все мои пробы убыстрить свелись к одному - полностью готовый хтмл(список ul) формирую на сервере и чисто innerHTML останется. Да, избыток некий текста в ответе, за счет тегов.
Но пробовал json-ом массив передавать и на js уже поэлементно вставлять - вообще тихий ужас, и даже если хтмл формируешь из него для вставки один раз - очень все браузеры тупят. Хром и опера - еще ладно, а ie - замирал конкретно. Несравнимо в общем с первым вариантом.
Спустя 3 часа, 29 минут, 57 секунд (18.11.2011 - 12:28) sebastjan написал(а):
Не знаю правильно ли я понял тему, на мой взляд оптимальней передать весь ХТМЛ на броузер клиенту а данные подгружать в зависимости от условий ЯваСкрипт при помощи XMLHTTPRequest сылка =>xmlhttprequest.ru
vital
Ты про этот обьек спрашивал кажеться.
vital
Ты про этот обьек спрашивал кажеться.
Спустя 18 минут, 38 секунд (18.11.2011 - 12:46) sergeiss написал(а):
Цитата (vital @ 18.11.2011 - 06:52) |
Не тупи. |
Цитата (inpost @ 18.11.2011 - 08:25) |
vital Просто гениальный ответ. |
Народ, давайте не будем пререкаться не по теме, ОК?
inpost - вопрос на самом деле был не про ПХП Ведь в аяксовом запросе можно указать не только ПХП-скрипт, но и скрипт на любом языке. Главное то, что мы получим в итоге, что будет отправлено клиенту. Так что вопрос был поставлен весьма корректно.
Спустя 4 часа, 9 минут, 33 секунды (18.11.2011 - 16:56) ApuktaChehov написал(а):
Вообще, странно, что формирование таблицы JS занимает столько времени.
Ну разве что она офигенно большая. Вообще мне стало очень интересно и я провел тест и вот что вышло.
Таблица из 100 строк, в каждой из которых по 19 ячеек сформировалась за 25ms.
Такой результат показал FF. Что касаемо IE8 то он показывает похожий результат, но при этом визуально задумывается примерно в 2.5-3 раза дольше FF. Правда все это без использования JSON. Насколько это тяжелая штука не знаю, я по жизни влюблен в XML
По мне так вполне себе неплохой результат для такой таблицы. С другой стороны в "боевых" условиях конечно ситуация может изменить. Но я думаю, что все зависит именно от требований.
Спасибо за внимание.
Ну разве что она офигенно большая. Вообще мне стало очень интересно и я провел тест и вот что вышло.
Таблица из 100 строк, в каждой из которых по 19 ячеек сформировалась за 25ms.
Такой результат показал FF. Что касаемо IE8 то он показывает похожий результат, но при этом визуально задумывается примерно в 2.5-3 раза дольше FF. Правда все это без использования JSON. Насколько это тяжелая штука не знаю, я по жизни влюблен в XML
По мне так вполне себе неплохой результат для такой таблицы. С другой стороны в "боевых" условиях конечно ситуация может изменить. Но я думаю, что все зависит именно от требований.
Спасибо за внимание.
Спустя 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 По мне так вполне себе неплохой результат для такой таблицы. С другой стороны в "боевых" условиях конечно ситуация может изменить. Но я думаю, что все зависит именно от требований. Спасибо за внимание. |
А теперь загрузите уже готовый хтмл просто с сервера.
Разница во времени в сколько раз?
Спустя 1 час, 37 минут, 6 секунд (18.11.2011 - 19:20) sergeiss написал(а):
Переместил тему в другой раздел, т.к. в "Конкурсах" ей точно нечего делать.
_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."
Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar