在性能和最佳实践方面。如果我最常显示所有页面中最近的博客文章列表,那么最佳解决方案是什么?。
lastPosts()
,它返回列表(可能通过服务)并迭代它。{% render %}
标记来调用lastPostsAction()
。 你更喜欢别人吗?
答案 0 :(得分:1)
如果您使用render
并在PostController
中设置了一项功能,则可以添加缓存,从而提升您的效果。请考虑以下事项:
<强> services.yml 强>
services:
foo.posts_cache:
class: Doctrine\Common\Cache\PhpFileCache
arguments: [%kernel.cache_dir%/posts]
<强> PostController中 强>
$cache = $this->get('foo.posts_cache');
// you can differentiate your cache id based on locale or pageId, route, etc.
$cacheid = 'posts';
if( null == ( $posts = $cache->fetch( $cacheid ) ) )
{
//fetch your posts
$posts = array();
// then save them for a day
$cache->save( $cacheid , $posts , 86400 );
}
return $posts;
请查看完整文档:
http://docs.doctrine-project.org/en/latest/reference/caching.html
请注意,在模板中使用渲染应该受到限制,因为这会发出子请求,在某些情况下很难调试。