Cho*_*per 6 php caching http-caching symfony
我对这个片段很感兴趣:
public function indexAction()
{
$response = $this->render('MyBundle:Main:index.html.twig');
$response->setETag(md5($response->getContent()));
$response->isNotModified($this->getRequest());
return $response;
}
Run Code Online (Sandbox Code Playgroud)
我应该尽可能这样做吗?我认为我的网站中的大多数页面都可以通过这种方式节省带宽(尽管不是CPU).
盲目地这样做只是为了节省带宽在我看来是浪费时间和不必要的代码复杂化.
您的缓存策略非常重要,必须在整个应用程序中明智地实施,使用各种缓存技术,具体取决于您的控制器的功能.
对于静态页面,我建议使用不带Etag的缓存过期,但使用Expires Header或Cache-control Header时更多
对于动态页面,我建议使用缓存和更多验证,然后使用Last-modified of Etag
最后,对于许多情况(在我的情况下,具有大量共享缓存的静态页面,但顶部的顶部栏有关于我无法缓存的已记录用户的个人信息),我建议使用ESI来单独缓存页面的不同块(在我的例子中,topbar从未缓存,并且页面的其余部分通过验证和ETag缓存)
通过这种方式,用多一点点的反思和全球战略,你对你的应用程序的顶部定义了一个可靠,高效的高速缓存,节省了双方的带宽和你的CPU