最糟糕的情况发生了。
虽然我采取了所有必要的预防措施,但似乎清漆缓存了用户登录的页面。
现在,当你访问我的网站时,你就是这个XXX人,这显然不是你。你可以编辑他的个人资料......
我只缓存了2页(主页和一个列表页面),我有标签:
@Cache(smaxage="10800")
在我的所有模板中,我使用ESI(用于菜单/页脚/登录模式)以防止出现这种情况:
{% render "HomeBundle:Home:login" with { 'appRequestUri' : app.request.uri }, { 'standalone': true } %}
{% render 'HomeBundle:Home:menu' with { 'locale' : app.request.locale }, { 'standalone': true } %}
“登录”操作没有@Cache
注释。
这是我在Varnish使用的default.vcl。
我做错了什么?
PS:我确实有esi: { enabled: true }
并导入了routing.yml
答案 0 :(得分:2)
在查看您的VCL后,您似乎会在每个请求中缓存 Cookie 。这不是你想要的,不是吗?
我建议您尽快关闭 vcl_recv :
sub vcl_recv {
if (req.http.Cache-Control ~ "no-cache") {
return (pass);
}
set req.http.Surrogate-Capability = "abc=ESI/1.0";
}
这样,默认 vcl_recv 将在之后立即调用,并且所有记录的请求都不会被缓存。
答案 1 :(得分:0)
我认为这不是因为缓存。 如果它只是缓存,您将无法编辑配置文件,因为您将获得用户的缓存页面而不是他的会话......