结论与原理 可以,合理启用各类缓存能显著缩短网站响应时间、降低源站负载并提升用户体验。其本质是把频繁访问的数据或页面副本存放在更快的介质(如内存、边缘节点)中,后续请求可直接命中,减少磁盘 I/O与后端计算。常见收益包括:更快的首屏与整体渲染、在流量高峰时平滑压力、减少带宽占用与网络时延。
可实施的缓存层级与做法
快速上手示例
http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
}
}
backend default { .host = "127.0.0.1"; .port = "8080"; }
acl cacheable { "localhost"; "127.0.0.1"; }
sub vcl_recv {
if (req.http.Cookie ~ "PHPSESSID" || req.http.Authorization) { return (pass); }
return (hash);
}
sub vcl_backend_response {
if (bereq.http.Cookie ~ "PHPSESSID") { set beresp.uncacheable = true; return (deliver); }
}
sub vcl_deliver {
set resp.http.X-Cache = obj.hits > 0 ? "HIT" : "MISS";
}
注意事项与监控
echo 1/2/3 > /proc/sys/vm/drop_caches 释放缓存,但这会短期内降低性能,仅用于排障或基准测试。