我在我的服务器上安装了清漆,但性能没有改变,http://www.webpagetest.org/说你的服务器上没有启用缓存系统,我使用的是 varnish 的默认配置,这是我的标头:
status: HTTP/1.1 200 OK
Server: Apache
X-Powered-By: PHP/5.3.29
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Expires: Mon, 1 Jan 2001 00:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: 73ab794b527721e09d2124da5815cf79=2f8ca1fed15724e75f5bf3824a26a9cd; path=/; HttpOnly
Last-Modified: Thu, 25 Sep 2014 08:28:53 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 77965
Accept-Ranges: bytes
Date: Thu, 25 Sep 2014 08:28:53 GMT
X-Varnish: 1531877383
Age: 0
Via: 1.1 varnish
Connection: close
答案1
我将看看我是否能为以后对这个问题的看法提供帮助,有许多因素会导致 Varnish 无法缓存内容。您需要解决所有这些问题,并希望有一个良好的日志记录/指标设置,以便您可以识别哪些页面/资源没有从缓存中响应。
您的缓存控制标头是:
status: HTTP/1.1 200 OK
Server: Apache
X-Powered-By: PHP/5.3.29
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Expires: Mon, 1 Jan 2001 00:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: 73ab794b527721e09d2124da5815cf79=2f8ca1fed15724e75f5bf3824a26a9cd; path=/; HttpOnly
Last-Modified: Thu, 25 Sep 2014 08:28:53 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 77965
Accept-Ranges: bytes
Date: Thu, 25 Sep 2014 08:28:53 GMT
X-Varnish: 1531877383
Age: 0
Via: 1.1 varnish
Connection: close
要使这个特定的请求可缓存,你需要修复:
Expires: Mon, 1 Jan 2001 00:00:00 GMT
这告诉 Varnish 不要缓存
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
这告诉 Varnish 不要缓存(Varnish 4+、Varnish 3 仍会缓存)
Set-Cookie: 73ab794b527721e09d2124da5815cf79=2f8ca1fed15724e75f5bf3824a26a9cd; path=/; HttpOnly
Varnish不会缓存任何使用Set-Cookie的响应
为了解决指标/日志记录问题,以便您可以查看所有请求,我写了有关 Varnish 设置选项的内容:https://www.section.io/varnish-install-quick-and-detailed/
答案2
你的问题在这里:
缓存控制:无存储,无缓存...
基本上:
- 下一次查找失败(Varnish 不会将响应存储在缓存中)
- 浏览器不会缓存响应,因此任何 F5 都会再次从您的服务器请求资源。
在你的 VCL 中使用下面的内容
sub vcl_fetch {
remove beresp.http.Cache-Control;
set beresp.http.Cache-Control = "public";
}
答案3
我在使用 PHP-FPM 的 ubuntu 服务器上遇到了这个问题:
Expires: Mon, 1 Jan 2001 00:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
问题出在/etc/php/7.1/fpm/php.ini
(PHP-FPM)中的 session.cache_limiter
sed -i "s/session.cache_limiter = nocache/session.cache_limiter = ''/" /etc/php/7.1/fpm/php.ini
要解决的其他问题是“SetCookie”,用于测试使用:
vcl 4.0;
backend default {
.host = "127.0.0.1";
.port = "8181";
}
sub vcl_recv {
unset req.http.cookie;
return(hash);
}
sub vcl_backend_response {
unset beresp.http.set-cookie;
set beresp.ttl = 30m;
}
sub vcl_deliver {
}
我遗漏的另一件事是a2enmod proxy_http
Apache2 中的 ProxyPass“