我是 Symfony2 的新手,我一直在考虑生成用于每个页面请求的导航栏 HTML 的最佳方法——尤其是在缓存方面。
所以想象一下,如果每个页面请求都显示登录用户和一个指示有多少消息未读的数字(实际上就像 stackoverflow 那样)。我猜这可以在每个控制器中生成以确保信息是最新的(当然使用函数或其他东西) - 但我也在考虑缓存整个控制器输出,并认为它可能很好保持这个动态部分分开。
为所有这些东西创建一个控制器扩展是一个好方法吗?所以这种方式控制器只处理特定的功能(例如从数据库中获取博客文章等),控制器扩展添加所有动态内容。这样我就可以缓存控制器结果并加快页面速度,而无需缓存整个页面(由于大量动态 HTML 内容,这实际上无法完成)。
可能是这样的:
class ControllerExtension extends Controller
{
public function render($view, array $parameters = array(), Response $response = null)
{
//get number of messages for this user
$parameters['messages'] =
//are they logged in
$parameters['logged_in'] =
// render as normal
return parent::render($view, $parameters, $response);
}
}
为此,我想忽略 JS 的使用。我知道其中一些东西可以用 JS 填充,但我不希望这样做。