3

Varnish 缓存如何影响 Omniture 设置的第三方 cookie 和 Google Analytics 设置的第一方 cookie?

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

但是在这里他们说这些软件设置了各种 cookie 来跟踪重复访问者,因此从请求中删除这些 cookie 基本上会将每个用户都视为新访问者。

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

4

3 回答 3

4

这里有一个很好的例子: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 将自动缓存页面并将其传送给您的访问者。

于 2012-02-12T12:50:25.963 回答
1

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

但是,cookie 本身可能会影响您的 Varnish 缓存——据我所知,Varnish 不会缓存任何具有 cookie 并依赖于它们的内容(即具有 Vary: Cookie 标头)。您可能希望自定义 VCL 规则以确保 Google Analytics cookie 不会阻止缓存。

于 2011-03-29T15:24:23.547 回答
1

Google Analytics 通过您域上的 javascript 设置 cookie。查看Google Analytics 如何使用 cookie

谷歌分析仅使用第一方 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 进行查找。

于 2011-03-30T06:12:21.843 回答