1. Мемкеш вы используете на категориях, брендах и товарах. Добавьте свойства. 34061 товаров, 42 свойства итого 1,4 миллиона перекрестных связей. В среднем 3 секунды на повторяющийся запрос и его парсинг в переменную. Это можно и НУЖНО кешировать.
2. В шаблоне нашел htmcache_get_ignores, htmcache_cookie_ignores. Игнорами пытаться оседлать кеширование это кощунство. Знаете сколько куков может быть у клиента? Я подключу в шаблон скрипт аналитики. Что мне гадать, какие куки скрипт насоздаст? Добавьте htmcache_get_accepts, htmcache_cookie_accepts. Лучше я запишу список куков и гетов, важных для моего шаблона, на них кеш обязан реагировать. А сейчас кеш словит что угодно. Пример 'http://mysite.ru/tovar1?blablabla' + Math.floor(Math.random() * 1000000) + '=hehehe' создаст массу закешированных копий одной страницы.
3. Добавить блочную функцию Smarty для возможности кешировать часть страницы. Примерно так
{htmcache key=myfilter accepts=['price_from', 'price_to', 'blabla1', 'blabla2']} код моего фильтра {/htmcache}
{htmcache key=brands accepts=['active_brand_id']} вывод брендов {/htmcache}
{htmcache key=categories accepts=['active_cat_id']} вывод категорий {/htmcache}
Параметр accepts это список гетов, на какие реагирует кеш страницы. Что это даст? Я могу снизить кеш затраты. Например подвал у меня одинаков в любых условиях. Вот так
{htmcache key=footer accepts=[]} подвал {/htmcache}
Вы храните страницу целиком. Я предлагаю дать возможность кеша по частям.