Т.е. в случае переименования какой-то из подкатегорий ТС надо будет руками каждую подкатегорию переименовывать?
Допустим.
Но вы-то что насоветовали? специализированную иерархическую БД или велосипед из (наверно самой неоптимальной) структуры в реляционной БД и key-value хранилища?
Как в вашей структуре надо будет хранить подкатегорию, у которой может быть сразу два родителя? А если это будут две разных по сути категории с одинаковым названием?
А memcached не микроскоп? БД-то всяко на сайте будет, вот в ней и хранить.
При хранении с помощью nested sets всё дерево (а также ветка, родительская ветка) выбирается в один запрос с использованием числовых полей в условии - я не особо представляю на каких объемах данных это будет тормозить. Джойн по числовому ключу тоже. Да, вставка там нетривиальна, но сдаётся мне, что она выполняться будет на порядки реже, чем выборка.
Тут человек спрашивает как ему дерево хранить - а вы ему memcached сразу предлагаете, оптимизаторы мамкины.
Во вкладку network в developer tools посмотрите на денвере, может там 404 есть на файл со шрифтами.
Советую разбить на две таблицы - в одной хранить собственно дерево категорий (тут есть разные подхода - nested sets, materialized path, adjacency list - по этим фразам погуглите, у подходов разные достоинства и недостатки)
А в другой - собственно справочник категорий.
В первой таблице храните просто id нужной категории из справочника и при выборке меню join'ите с таблицей-справочником.
Насколько помню, там изначально загружается страничка с js, который ставит куку (или делает спец-запрос, который ставит куку), и страница рефрешится. А на второй раз у вас уже есть кука - и вас пускает на сайт.
group by Users1.user_id
еще наверно
Если из виджета не открывает - то я бы в исходном коде посмотрел, может там как-то преобразуется код и на выходе получается что-то нераспознаваемое телефоном.
Насколько понимаю - то парсить через боль и страдания.
Не помню точно cloudflare там был или какая-то аналогичная защита, но суть была в том, что там выполнялся код на js, который определял на selenium ли или что-то аналогичное у вас и ставил нужную куку. Кука, естественно каждый раз разная и код обфусцрован. В общем, пришлось в дополнение к selenium'у прикручивать еще Fiddler2 и фильтровать траффик, подменяя то ли сам js, то ли запрос, кторый js-скрипт в итоге посылал. Но у меня была разовая задачка - там такая доля ручного труда была оправдана.
Вам советую посмотреть на эту страничку в бразере и dev tools вкладка network или fiddler - чтобы понять, какие файлы там запрашиваются. А потом попвыряться с скриптах, чтобы понять, что там происходит.
Так png может с потерями чтоли сжимать? Или раз размер файла стал меньше - это значит что-то потеряли?