【发布时间】:2022-01-01 22:08:41
【问题描述】:
我想缓存某些特定 cookie 的 set-cookie 标头。我要缓存的 cookie 对于所有用户都是相同的,并且特定于页面。 Varnish 可以吗?
【问题讨论】:
标签: varnish varnish-vcl
我想缓存某些特定 cookie 的 set-cookie 标头。我要缓存的 cookie 对于所有用户都是相同的,并且特定于页面。 Varnish 可以吗?
【问题讨论】:
标签: varnish varnish-vcl
如果所有用户的 cookie 相同,您可以覆盖 the built-in VCL behavior for Set-Cookie headers in the vcl_backend_response 子程序,如下所示:
sub vcl_backend_response {
if(bereq.url ~ "^/your-page" && beresp.http.Set-Cookie ~ "^yourCookieName=") {
return(deliver);
}
}
我添加了 yourCookieName 检查,您应该将其替换为实际 cookie 的名称,以确保不会缓存每个 Set-Cookie 标头。
我还添加了一项额外检查以确保匹配正确的 URL 模式。如果您只想匹配单个页面,请将^/your-page 正则表达式模式替换为实际的 URL 模式或执行精确的字符串匹配。
【讨论】: