我对this snippet感兴趣:
public function indexAction()
{
$response = $this->render('MyBundle:Main:index.html.twig');
$response->setETag(md5($response->getContent()));
$response->isNotModified($this->getRequest());
return $response;
}
我应该尽可能地这样做吗?我认为我的网站中的大多数页面都可以通过这种方式节省带宽(尽管不是CPU)。
答案 0 :(得分:5)
为了节省带宽而盲目地做这件事在我看来是浪费时间和不必要的代码复杂化。
您的缓存策略非常很重要,必须在整个应用程序上明智地实施,使用各种缓存技术,具体取决于您的控制器的功能。
对于静态页面,我建议在没有Etag的情况下使用缓存过期,但在Expires Header或Cache-control Header
对于动态网页,我建议使用more validation缓存,然后使用Etag的Last-modified
最后,对于很多情况(在我的情况下,具有大量共享缓存的静态页面,但顶部的顶部栏有关于我无法缓存的已记录用户的个人信息),我建议使用{{3}单独缓存页面的不同块(在我的情况下,顶部栏从未缓存,页面的其余部分缓存为验证和ETag)
通过这种方式,通过更多的反思和全局策略,您可以在应用程序之上定义可靠且高效的缓存,从而节省两者带宽和CPU