Först, för att lägga till cachning i skriptet , det verkar som om det inte skulle vara så svårt att lägga till Zend_Feed
och Zend_Cache
tillsammans - eller bara slå in ditt nuvarande generationsskript med Zend_Cache
.
Ställ bara in cachen med din livstid:
$frontendOptions = array(
'lifetime' => 7200, // cache lifetime of 2 hours
'automatic_serialization' => true
);
Kontrollera sedan om cachen fortfarande är giltig:
if(!$feed = $cache->load('myfeed')) {
//generate feed
$cache->save($feed, 'myfeed');
}
//output $feed
Jag vet inte hur du skapar din RSS, men du kan importera en arraystruktur till Zend_Feed
:
$rssFeedFromArray = Zend_Feed::importArray($array, 'rss');
Naturligtvis det bästa sättet kan vara att bara använda din nuvarande flödesgenerator och spara utdata till en fil . Använd den filen som RSS-flöde och använd sedan cron/web hooks/queue/whatever för att generera den statiska filen. Det skulle vara enklare och använda mindre resurser än att låta generationsskriptet göra cachningen.
//feedGen.php
//may require some output buffering if the feed generator outputs directly
$output = $myFeedGenerator->output();
file_put_contents('feed.rss', $output);
Nu är flödeslänken /feed.rss
, och du kör bara feedGen.php
när den behöver uppdateras. Att servera den statiska filen (inte ens tolkad av php) betyder mindre för din server att göra.