3

我最近一直在研究 Varnish 并进行了一些繁重的 Google 搜索。我们最近在运行电子商务网站的服务器上设置了这个以迎接圣诞节。在接下来的几周内,我们将增加回访次数,因此使用 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);
     }

我的问题是 - 我对 - 什么 - 将被缓存的细节有点困惑。这是否也会缓存某人的购物车,从而将其提供给该产品页面的所有访问者?

抱歉,如果我在这里遗漏了 Varnish 的基本要点;最坏的情况下,这将有助于减轻回访的负担,但缓存更多的网站会更好!

首先十分感谢

4

1 回答 1

2

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

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

根据您的网站的外观,您可能想要:

  • 保持行为不变:例如,如果您在页面上有某个位置显示登录用户的用户名,则您不希望将其缓存。基本上在这种情况下,Varnish 只会缓存访客的内容(即没有会话的用户)
  • 如果您没有在每个页面上都有这样的用户相关框,您可以缓存除用户相关(例如购物车)页面之外的所有内容。
于 2011-10-14T11:24:19.330 回答