我无法制作使用会话的 PHP 生成的 Varnish 3.0.2 缓存文件。我知道默认情况下 Varnish 不会使用 Set-Cookie 缓存文件,但我相信我正在删除此标头。
sub vcl_recv {
# PHP Generated CSS
if( req.url ~ "^/css/" ) {
unset req.http.Max-Age;
unset req.http.Pragma;
unset req.http.Cache-Control;
unset req.http.Cookie;
return(lookup);
}
sub vcl_fetch {
if( req.url ~ "^/css/" ) {
remove beresp.http.Cache-Control;
remove beresp.http.Pragma;
remove beresp.http.set-cookie;
}
if (beresp.ttl <= 0s ||
beresp.http.Set-Cookie ||
beresp.http.Vary == "*") {
std.log("--------- HIT FOR PASS --------");
set beresp.ttl = 920s;
return (hit_for_pass);
}
return (deliver);
}
每个 PHP 请求都将转到 hit_for_pass 并且永远不会被缓存。TTL 值始终为 -1。