【发布时间】:2015-02-07 16:56:23
【问题描述】:
我想缓存每个页面(即使有 cookie),php 中的后端没有为此做好准备,所以它发送了多个 Set-Cookie 标头。当我删除所有 session_start 和 setcookie 功能时,页面 HITs,但是当我将我的 vcl 设置为 varnish 自动为我执行此操作时,页面总是未命中。
这是我的 default.vcl:
vcl 4.0;
backend default {
.host = "myhost.app";
.port = "80";
}
sub vcl_recv {
unset req.http.cookie;
}
sub vcl_backend_response {
unset beresp.http.set-cookie;
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}
【问题讨论】:
-
php 文件返回的 Cache-Control 和 TTL 响应头值是多少?
-
嗨@MarcelDumont,我认为这无关紧要,我不想改变我的后端。是否可以通过varnish VCL取消设置CacheControl和TTL,所以varnish会缓存所有页面?
-
询问的原因是,除了 cookie 之外,还有更多因素会导致 varnish 意外通过。而 CacheControl 和 TTL 往往是原因。所以它是相关的。如果您可以显示完整的请求和响应标头,那将是理想的。
标签: php cookies varnish varnish-vcl