所有页面中显示数据的最佳实践

时间:2014-06-15 21:21:39

标签: symfony twig

在性能和最佳实践方面。如果我最常显示所有页面中最近的博客文章列表,那么最佳解决方案是什么?。

  1. 创建一个枝条扩展函数lastPosts(),它返回列表(可能通过服务)并迭代它。
  2. 在PostController中使用twig {% render %}标记来调用lastPostsAction()
  3. 你更喜欢别人吗?

1 个答案:

答案 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

请注意,在模板中使用渲染应该受到限制,因为这会发出子请求,在某些情况下很难调试。