使用cookie缓存而不缓存Cookie

时间:2016-04-01 08:59:37

标签: caching cookies varnish varnish-vcl varnish-4

根据欧洲有关Cookie的规定,我们需要显示一条消息,让用户知道我们使用Cookie。

当他们接受时,我们设置了一个cookie!除了严重依赖跟踪cookie之外,我们还需要这个cookie :(

我已经设置了Varnish来缓存资产和我的目标网页,这自然会对速度产生巨大影响。资产正在实现梦想,主页永远不会从服务器接收Set-Cookie,因为这就是Varnish开箱即用的方式。

我们的清漆服务器是Centos 7,它安装了Varnish 4.我们的目标是最终转移到Fastly,他们有一个指南来完成我想要做的事情,这允许我们使用Cookie并避免缓存它们。

https://www.fastly.com/blog/how-to-cache-with-tracking-cookies

然而,req变量不再在Varnish 4中的vcl_deliver范围内。

有没有人能够找到解决方法呢?

1 个答案:

答案 0 :(得分:1)

你应该只能存储" Tmp-Cookie"在 beresp 而不是 bereq 中,在这种情况下,它会在 vcl_deliver 中传播到 resp 。然后,您可以将其复制到 Set-Cookie

快速建议的修改版本:

sub vcl_backend_response {
    if (beresp.http.Set-Cookie) {
        # ... so store it temporarily
        set bereq.http.Tmp-Set-Cookie = beresp.http.Set-Cookie;
        # ... and then unset it
        unset beresp.http.Set-Cookie;
    }
}

sub vcl_deliver {
    if (resp.http.Tmp-Set-Cookie) {
        set resp.http.Set-Cookie = resp.http.Tmp-Set-Cookie;
        unset resp.http.Tmp-Set-Cookie;
    }
}

这应该与响应处理等效,但您仍然希望最有可能处理传入的请求cookie(如果相关)。