Чет у тебя сложно написано, можно проще:
$view = cache("page-{$product->id}", function () {
$view = view('product.index', ['product' => $product])->render();
cache(["page-{$product->id}" => $view], 180);
return $view;
});
return $view;
А насчет основного вопроса, тут строго индивидуально, слишком мало данных ты предоставил мало данных, можно долго исследовать как лучше и тд.
Но в целом кеширование целой html(условно говоря) страницы это ок, позволяет ЗНАЧИТЕЛЬНО ускорить работу сайта, особенно когда нужно меньше обновлять материал(допустим страница новости, без комментариев). Ну а что касается расхода памяти, ну а как иначе, вся суть кеширования это меньше расхода процессора, больше расхода озу.