使用 Varnish 删除 Google Cookies

使用 Varnish 删除 Google Cookies

我正在我的服务器上设置清漆,并一直在研究 VCL(我认为它非常简洁),我在vcl_recv写的内容中有以下内容,我不明白为什么这是必要的。

if (req.url ~ “\?(utm_(campaign|medium|source|term)|adParams|client|cx|eid|fbid|feed|ref(id|src)?|v(er|iew))=”) {
    set req.url = regsub(req.url, “\?.*$”, “”);
}

这将剥离对谷歌的 GIF 请求的谷歌分析跟踪。

为什么需要从进入我的服务器的请求中删除这一点,而且这不会破坏我的客户端的跟踪和分析吗?

答案1

这不会删除任何 cookie,而是重新注册大量 uri 扩展/参数(如 ver=somethingsomething)。我个人认为,如果您不是故意写这个,那么就不要使用它。

关于删除 google __utm* cookies 会对分析产生什么影响的问题。您链接到一些外部 js 脚本,客户端获取它,然后 google 发出与您的域匹配的 Set-Cookie。用户对您发出的下一个请求包含此 Cookie,从而阻止您使用独立于用户的缓存。因此,您从您这边删除了此 cookie。Google 分析不受影响,因为您提供的 google .js 无法在服务器端读取标头,而是在客户端读取,换句话说,它们对您的网站不起作用。当客户端请求 .js 文件时,Analytics 会获取其信息。您显然不应该发布任何名称冲突的 cookie,因为这可能会导致问题。

我基本上使用varnish-cache.org 上的示例

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;
    }
}

相关内容