Не очень понятно о каком кешировании идет речь, минимальный вариант примерно такой:
define('CACHE_DIR', '/путь/к/папке/кеша');
$cacheFile = CACHE_DIR . '/' . intval($_GET['id']); // id продукта
if (file_exists($cacheFile)) return file_get_contents($cacheFile);
ob_start();
// ... любой код
$output = ob_get_clean();
file_put_contents($cacheFile, $output);
echo $output;
Тут, не учитывается время жизни кеша, функционал работы корзины и т.д. Но, базовый смысл такой.
В твоем случае, всего скорее проблема в скорости выборки товаров по определенным запросам. Если это так, то самый простой вариант создать таблицу типа memory и там хранить результаты наиболее тяжелых запросов. Более сложный вариант: выяснить что именно требуется кешировать и дальше оптимизировать код / конфиги базы, либо использовать http ускорители типа varnish-а.