繁体   English   中英

Cookie如何影响Varnish缓存?

[英]How cookies affect Varnish caching?

Varnish缓存如何影响Omniture设置的第三方Cookie以及Google Analytics设置的第一方Cookie?

到目前为止,我已经看到了反对意见,有些人说,因为跟踪统计数据是由JavaScript创建的(这是真的),从请求中剥离这些Cookie不会影响GA或Omniture。

然而他们在这里说这些软件设置各种cookie来跟踪重复访问者,因此从请求中剥离这些cookie实际上将每个用户都算作新访问者。

我不希望我的用户每次都算作新访客。 我不确定这些JavaScript嵌入是否能够计算页面是第一次提供还是重复访问者。 任何与官方GA或Omniture文档的链接都非常感谢。

这里有一个很好的例子: https//www.varnish-cache.org/trac/wiki/VCLExampleRemovingSomeCookies

基本上你想要在Varnish将请求发送到后端之前删除所有GA cookie:

sub vcl_recv {
  if (req.http.Cookie) {
    set req.http.Cookie = regsuball(req.http.Cookie, "(^|; ) *__utm.=[^;]+;? *", "\1"); # removes all cookies named __utm? (utma, utmb...) - tracking thing

    if (req.http.Cookie == "") {
        remove req.http.Cookie;
    }
  }
}

如果没有剩下其他cookie,Varnish将自动缓存并向访问者提供页面。

Google Analaytics在客户端使用JavaScript设置和读取Cookie,因此只要您没有设置任何冲突的Cookie,Varnish缓存就不会影响它。

但是,cookie本身可能会影响你的Varnish缓存 - 据我所知,Varnish不会缓存任何有cookie并且依赖于它们的东西(也就是说,有一个Vary:Cookie标题)。 您可能希望自定义VCL规则,以确保Google Analytics Cookie不会阻止缓存。

Google Analytics通过您网域上的javascript设置Cookie。 请参阅Google Analytics如何使用Cookie

Google Analytics只使用第一方Cookie。 这意味着Google Analytics为您的域设置的所有Cookie仅将数据发送到您域的服务器。

对于清漆使用,这意味着您可以缓存页面响应,因为个人cookie不是通过Set-Cookie标头设置的,而是由javascript为每个人生成的。 但是,Cookie会随请求一起发送到您的域,而当前的default-vcl表示:

sub vcl_recv {

  ..

  if (req.http.Authorization || req.http.Cookie) {
    /* Not cacheable by default */
    return (pass);
  }
}

它表示如果发送cookie,它将不会进行缓存查找。 因此,在你的vcl_recv中你应该“取消设置req.http.Cookie”或者不管req.http.Cookie进行查找。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM