我最近一直在研究Varnish,并做了一些大量的谷歌搜索。我们最近在我们运行电子商务网站的服务器上设置了这个预期的圣诞节。在接下来的几个星期里,我们的回访人数会增加,所以使用Varnish似乎是个好主意。
我想知道是否有人可以为我澄清一些事情-当使用Varnish时,如果用户第一次到达它检测到一个新的cookie(会话用于购物车)并缓存他们访问的页面。
然而,如果我们想缓存不止一个客户的重复访问,我在一个单独的stackoverflow线程中看到,即使使用了session_start,编辑.vcl也可以帮助缓存页面:
sub vcl_recv {
unset req.http.Cookie;
return (lookup);
}
sub vcl_fetch {
unset beresp.http.Set-Cookie;
set beresp.ttl = 24h;
return(deliver);
}
我的问题是-我有点困惑的细节-什么-将被缓存。这是否也会缓存某人的购物车,从而为该产品页面的所有访问者提供服务?
如果我在这里遗漏了清漆的基本要点,请道歉;在最坏的情况下,这将有助于减轻回访的负担,但缓存更多的网站会更好!
Varnish不会(默认情况下)缓存设置cookie的页面。cookie将状态引入HTTP,因此Varnish无法知道页面是否被更改。
你上面的代码片段虽然不会解决你的问题。它将完全删除Cookie头。(也就是说,你的PHP后端将不会接收会话cookie。)
根据您的网站的外观,您可以:
- 让行为保持原样:例如,如果您在页面上有一些地方说登录用户的用户名,您不希望它被缓存。基本上在这种情况下,Varnish只会为guest(即没有会话的用户)缓存内容
- 如果你没有在每个页面上都有这样的用户依赖框,你可以缓存除用户依赖(例如购物车)页面之外的所有内容。