Первое, что приходит в голову — сделать блочное кеширование. Каждому продукту отдельный кеш. Собирать через esi.
Далее, можно добавить кеширование в статику за варнишем. Тем же нгниксом, например. Тогда можно актуализировать этот кеш и уже потом удалять из варниша. Избавит от проблемы, когда клиент спрашивает страницу одновременно с краулером.