Я слежу за этой темой, что бы для себя не упустить что-либо полезное. Одну лишь мысль хотел добавить:
Иногда имеет смысл хранить не сгенерированные страницы (или блоки), а некую информацию по которой легко воссаздаётся та или иная часть страницы.
Ничего путного в голову не приходит, но например:
http//site/products?param1=TV¶m2=SONY¶m3=LED
здесь видно, что пользователь набрал в фильтре TV-SONY-LED, теперь, в базе, надо выбрать все телевизоры, затем из этого списка выбрать sony, и затем ещё led = в лучшем случае 3 запроса, но для получения результата надо:
а.объединять(inner join, возможно сложных) таблицы продукты и параметры при запросах
б.где-то хранить промежуточные данные
в. ...
Предположим, получили результат - 10 моделей в нашем списке, и лишь 5 моделей в наличии, вываливаем список теликов на экран.
Кэшировать ли итоговый html блок (а если, в добавок, идёт разбивка на страницы, то как) ? А не проще ли запомнить в таблице, условно назовём её products_filters, ID_фильтра и ID_товаров, попадающих под этот запрос, и при следующем подобном запросе, одним селектом, запрашивать список товаров.
Собственно это и хотел сказать.