Что касается кеша, то вы не будете кешировать для каждого пользователя, я не думаю. Вы можете кэшировать сами продукты, чтобы не допустить повторных обращений к базе данных. Что касается хранения предыдущих поисков пользователя, может ли это быть лучше сделано с cookie? Таким образом, серверу не нужно будет помнить это для каждого пользователя, и вы сможете проверять cookie-файлы по запросам.