Как ускорить генерацию древовидного меню на сайте?
У меня в интернет-магазине (база MySQL, язык PERL) огромный каталог с несколькими уровнями вложенности, который выводится в виде древовидного меню на каждой странице сайта.
Каталог не статичный, меняется в зависимости от группы покупателя.
Кроме того, на странице выбранного раздела, меню должно быть раскрыто и выделен выбранный раздел.
1. При выводе в реальном времени запросами SELECT меню генерируется несколько секунд.
2. Сделал файл с cash.pl, где предварительное собираю из MySQL массив разделов каталога, и далее в виде вложенных циклов вывожу меню на сайт. Это сократило вывод меню до 0.3 сек.
Все равно очень долго.
Стоит ли использовать для хранения кода меню для каждой страницы сайта в Redis или Memcached?
Что еще может подойти для этой задачки?
Главное отрисовать html с меню и сохранить его в кэш.
Каждый раз при посещении пользователем страницы проверять есть ли закешированное меню для него, если нет генерируем, если есть выдаём из кэша.
В зависимости от времени жизни кэша, иногда какому-то пользователю придётся подождать генерацию меню, остальные будут получать меню быстро благодаря кэшу.