Symfony2 esi缓存用户信息

时间:2013-03-08 21:09:44

标签: caching symfony esi

我需要缓存我的主页,这远远没有问题,使用反向代理就足够了

但是我还需要将标题部分包含在独立(ESI)中,以便我可以检查用户是否已连接并显示他的信息“hello Vincent”。

问题在于,如果我这样做,主页(作为每个页面)将必须测试会话,并且当我使用PDO存储时,我可以看到在MySQL上为每个用户/页面运行2个查询。

所以我尝试添加一个简单的“is_connected”cookie,并检查它是否缺席以呈现已注销的版本而不询问会话,但似乎只要我有一个防火墙让匿名用户就会要求会话

我已经没想完了,我想知道人们为此做了什么,目标是在主页上根本没有查询。

感谢

1 个答案:

答案 0 :(得分:0)

主页不需要测试会话。它应该公开缓存并包含esi include标记:

<esi:include src="/home/header_fragment.html" />

只有header_fragment资源需要测试用户的会话以进行登录。您可以在登录的cookie中存储登录用户信息的小缓存(名称,电子邮件等),并在header_fragment中读取以确定登录与退出,如果登录则显示用户名而不是查找数据存储中的信息。