You'll want to use a mix of server-side caching and client-side caching. The
server-side caching can be done with Zend_Cache. That way if two separate
users try to access the feed, your application only needs to build it once.
For client-side caching, you'll need to analyze the request and send the
correct response headers.
I use something like this:
public function viewAction()
{
$request = $this->getRequest();
$response = $this->getResponse();
// Enable browser caching
$response->setHeader('Cache-Control', 'private, max-age=10800,
pre-check=10800', true);
$response->setHeader('Pragma', 'private', true);
$response->setHeader('Expires', date(DATE_RFC822, strtotime(' 2 day')),
true);
// Check for client cache
if (null !== ($modified = $request->getServer('HTTP_IF_MODIFIED_SINCE'))) {
// User has cached page, send 304 "not modified" header
$response->setHeader('Last-Modified', $modified, true);
$response->setHttpResponseCode(304);
} else {
// User does not have cached page, build response body
*/* Your server-side caching code goes here */*
* $response->setBody($feed);*
}
// Send response
$response->sendResponse();
exit;
}
I hope this helps.
--
Hector
On Thu, Dec 10, 2009 at 12:48 PM, takeshin <[email protected]> wrote:
>
> How to send feeds properly?
>
> I want browser read whole file, only if it has new entries.
>
> I read data from the database. Limit result to 15 items.
> Then create an array and pass it to the Zend_Feed.
>
> Shall I cache the above steps with Zend_Cache + very long lifetime,
> and use a cache tag, clean cache entries by tag when new article is posted?
>
> Then, is it enough to use send() method?
> Do browsers read last-modified entry from the feed itself,
> or only from the HTTP headers?
>
> --
> regards
> takeshin
>
> --
> View this message in context:
> http://n4.nabble.com/Zend-Feed-sending-proper-headers-tp960516p960516.html
> Sent from the Zend Framework mailing list archive at Nabble.com.
>