This would cache only the xml for an hour.
<?php
$goodreads_api = 'xxxxxx';
foreach($page->children as $bundle) :
foreach($bundle->goodreads as $goodreads) :
$xml_string = $cache->get($goodreads->isbn, 3600, function() use($goodreads_api, $goodreads) {
return file_get_contents('https://www.goodreads.com/search/index.xml?key='.$goodreads_api.'&q='.$goodreads->isbn);
});
$book_xml = new SimpleXMLElement($xml_string);
foreach ($book_xml->search->results->work as $book) :
// content goes here
endforeach;
endforeach;
endforeach;