В коллекции уже есть встроенное кэширование, но им нужно немного указать, поэтому поместите это в конструктор коллекции:
$cache = Mage::app()->getCacheInstance();
$prefix = "SomeUniqueValue";
$this->initCache($cache, $prefix, array(Mage_Catalog_Model_Product::CACHE_TAG));
Выберите теги, соответствующие содержанию коллекции, чтобы она автоматически очищалась. Этот способ создает идентификатор на основе выполняемого запроса, он наиболее полезен, когда коллекция фильтруется, упорядочивается или разбивается на страницы - это позволяет избежать конфликта версий.
Обычно это вряд ли используется, потому что когда вы извлекаете данные, вы почти всегда заканчиваете их отображением, вероятно, в виде HTML, поэтому вместо этого имеет смысл кэшировать вывод. Блочное кэширование широко используется и лучше документировано.