清漆缓存&购物车

时间:2011-10-14 11:06:53

标签: php varnish

我最近一直在研究Varnish并进行一些重要的谷歌搜索。我们最近在我们运行电子商务网站的服务器上预期了圣诞节。我们将在未来几周内增加回访,所以使用Varnish似乎是一个好主意。

我想知道是否有人可以为我澄清一些事情 - 当使用Varnish时,如果用户第一次到达时它会检测到新的cookie(因为会话用于购物车)并缓存他们访问的页面。

但是,如果我们想要缓存超过客户的重复访问,我在一个单独的stackoverflow线程上看到,使用以下内容编辑.vcl将帮助它缓存页面,即使使用了session_start:

     sub vcl_recv {
     unset req.http.Cookie;
     return (lookup);
     }

     sub vcl_fetch {
     unset beresp.http.Set-Cookie;
     set beresp.ttl = 24h;
     return(deliver);
     }

我的问题是 - 关于-what-缓存的具体细节,我有点困惑。这会缓存某人的购物车,从而为该产品页面的所有访问者提供此服务吗?

道歉,如果我在这里错过了一个基本的清漆点;在最糟糕的情况下,它可以帮助减轻回访的负担,但缓存更多的网站会更好!

非常感谢

1 个答案:

答案 0 :(得分:2)

Varnish不会(默认情况下)使用设置Cookie缓存页面。 Cookie将状态引入HTTP,因此Varnish无法知道页面是否已更改。

您的上述代码段不会解决您的问题。它只会完全删除Cookie标头。 (即,您的PHP后端不会收到会话cookie。)

根据您的网站的具体情况,您可能希望:

  • 保持行为原样:例如,如果您在页面上有一些位置,说明您不希望缓存登录用户的用户名。基本上在这种情况下,Varnish只会缓存访客的内容(即没有会话的用户)
  • 如果您在每个页面上都没有这样一个依赖于用户的框,则可以将所有内容缓存在与用户相关的(例如购物车)页面之外。