[web] посоветуйте как лучше сделать

kill-still

Есть выпадающее меню с ~5к позиций (5-8 уровней вложенности). Надо отобразить его на вёб-страничке. По моим соображениям, передавать в виде хтмл это плохо, т.к. там слишком много лишней информации. Имхо, лучше передать в виде допустим json-а и построить хтмл на стороне клиента. Посоветуйте, как лучше сделать. Я думаю данная задача решалась уже овер дофига раз. Может есть готовые открытые js библиотеки?

Varvara2002

И в чём принципиальное улучшение для пользователя
между генерацией на сервере и генерацией на стороне клиента?

agaaaa

Траффик

uncle17

если трафик, то аяксом вытаскивать очередной уровень и сохранять уже в объекте на клиенте

Varvara2002

Где?
В обоих случаях собирается передавать все данные.

khachin

При аяксе можно ограничиться только передачей раскрываемого уровня. Вполне возможно, что другие конечному пользователю не потребуются.
При необходимости загрузить в любом случае все данные — да, профит от смены метода небольшой.

kill-still

Так, вписту аякс. Мы не хотим, чтобы клиент ждал после каждого нажатия на пункт. Жсон-массив из 5к элеметов отдать это не проблема.

kill-still

Не только. Шаблонизатор ещё сильно охреневает от такого надругательства (1к хитов VS 6к хитов в секунду при отключенном меню на моей машине) (если что - это черновой вариант, чтобы было что тестировать).

kill-still

Так что там насчёт конкретных советов? Просто я не спец в js, он говорят по-разному работает в разных браузерах. Напишу что-нибудь, а он в каком-нибудь IE старом не будет работать - некарашо.

stm5872449

Так, вписту аякс. Мы не хотим, чтобы клиент ждал после каждого нажатия на пункт. Жсон-массив из 5к элеметов отдать это не проблема.
Я не совсем понял, что тебе нужно, возможно это?

kill-still

Я не знаю, что мне нужно, по-этому и спросил. :)
Главное чтобы пользователям удобно было.
Вообще я уже было решил через http://goessner.net/download/prj/jsont/jsont.js сделать, но решил вот проконсультироваться на всякий случай.

6yrop

там слишком много лишней информации
gzip сжатие не спасет?

kill-still

Спасает, но вроде оно не всеми браузерами поддерживается. К тому же это надо зазипованый хтмл на сервере кешировать. Я не хочу заморачиваться в системе мониторинга кеша разархивированием.

Ivan826

не так давно делал 5-и уровневый каталог с 10-20 дочерними элементами у каждого.
Фишка в том, что по открытию уровня N асинхронно фоном грузятся все возможные внуки (N+2)
Выглядит это так, что при открытии дети появляются мнгновенно (они уже загружены и вставлены в dom) и по мере подгрузки внуков появляются ссылочки раскрытия детей

uncle17

я примерно так и предлагал.
Кстати, по теме: http://habrahabr.ru/post/200898/ - можно домудрить до нехватки памяти с такими деревьями

Ivan826

В моем варианте ожидание подгрузки практически нулевое т.к. Дети элемента уже погружены и в доме на момент открытия ноды.
а за статью спасибо, интересно

kill-still

всё будет через Handlebars

Dimon89

Есть выпадающее меню с ~5к позиций (5-8 уровней вложенности).
Никакой юзер в здравом уме не будет просматривать 5к позиций. Средний юзер, скорее всего, даже сотню позиций не просмотрит. Я бы делал аяксом, благо на хорошем коннекте задержка в доли секунды не заметна. И прекэш внуков, как Корян предлагал.

kill-still

Ребят, а гугл такой контент (в виде json массива в яваскрипте) будет индексировать?

okis

нет
для гугла нужно отдавать статику в специальном виде
Оставить комментарий
Имя или ник:
Комментарий: