Php 如何使Varnish 4缓存所有内容,而不考虑缓存控制头和cookie
简而言之,我正在努力Php 如何使Varnish 4缓存所有内容,而不考虑缓存控制头和cookie,php,varnish,varnish-vcl,Php,Varnish,Varnish Vcl,简而言之,我正在努力 if (beresp.ttl < 120s) { set beresp.ttl = 120s; unset beresp.http.Cache-Control; } 请注意,每当有人输入url和地址栏并点击enter键时,Chrome默认将缓存控制设置为max age=0。cookie是通过session_start的默认php cookie,也是一个自定义会话cookie 现在我想忽略cookies和缓存控制头 以
if (beresp.ttl < 120s) {
set beresp.ttl = 120s;
unset beresp.http.Cache-Control;
}
请注意,每当有人输入url和地址栏并点击enter键时,Chrome默认将缓存控制设置为max age=0。cookie是通过session_start的默认php cookie,也是一个自定义会话cookie
现在我想忽略cookies和缓存控制头
以下是我的VCL设置:
sub vcl_recv {
# Happens before we check if we have this in cache already.
#
# Typically you clean up the request here, removing cookies you don't need,
# rewriting the request, etc.
}
sub vcl_backend_response {
# Happens after we have read the response headers from the backend.
#
# Here you clean the response headers, removing silly Set-Cookie headers
# and other mistakes your backend does.
# set beresp.ttl = 60s;
if (beresp.ttl < 120s) {
set beresp.ttl = 120s;
unset beresp.http.Cache-Control;
}
}
sub vcl_deliver {
# Happens when we have all the pieces we need, and are about to send the
# response to the client.
#
# You can do accounting or modifying the final object here.
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}
这是一个失误
后端服务器上的php基本上只是响应一个随机数:
<?php
echo 'Hello worlds';
echo '<hr/>';
echo rand();
?>
Cookie正在阻止缓存命中。尝试在
vcl\u recv
和vcl\u backend\u response
中剥离cookie
sub vcl_recv {
unset req.http.cookie;
}
在vcl_后端_响应中
sub vcl_backend_response {
if (beresp.ttl < 120s) {
unset beresp.http.cookie;
unset beresp.http.Set-Cookie;
set beresp.ttl = 120s;
unset beresp.http.Cache-Control;
}
}
子vcl\u后端\u响应{
如果(贝雷斯普ttl<120s){
取消设置beresp.http.cookie;
unset beresp.http.Set-Cookie;
设置beresp.ttl=120s;
取消设置beresp.http.Cache-Control;
}
}
已测试并按预期工作。缓存,而不考虑标头中的cookie和缓存控制。
sub vcl_recv {
unset req.http.cookie;
}
sub vcl_backend_response {
if (beresp.ttl < 120s) {
unset beresp.http.cookie;
unset beresp.http.Set-Cookie;
set beresp.ttl = 120s;
unset beresp.http.Cache-Control;
}
}