我是 Varnish Cache 的新手,有一个问题希望能得到一些帮助。
我有一个非常简单和基本的设置,但由于某种原因,它无法正常工作。
这与 Varnish 不缓存使用 cookie 的 PHP 页面有关。
这是我的设置:
1) 对于我的 default.vcl,我有一个简单的后端
backend default {
.host = "127.0.0.1";
.port = "80";
}
2) 我有一个简单的 PHP 文件,它只有这两行:
session_start();
echo time();
3)当我正确调用此页面时,它不会缓存,因为我没有添加所需的 vcl 规则
4)
因此,根据我对文档的理解,我在这两条规则中添加
sub vcl_recv {
unset req.http.Cookie;
return (lookup);
}
sub vcl_fetch {
unset beresp.http.Set-Cookie;
return(deliver);
}
5) PHP 页面仍然不会缓存。我可以看到Set-Cookie
标题已被删除,因为我在 FireFox 中使用 FireBug。
只有当我将它添加到 sub vcl_fetch 时,PHP 才会缓存:
set beresp.ttl = 24h;
我的问题是这是正确的吗?
我认为我不需要更改后端响应的 ttl。我认为只是取消设置 cookie 会强制 PHP w/ session 缓存。
我完整的默认 vcl 是:
backend default {
.host = "127.0.0.1";
.port = "80";
}
sub vcl_recv {
unset req.http.Cookie;
return (lookup);
}
sub vcl_fetch {
unset beresp.http.Set-Cookie;
set beresp.ttl = 24h;
return(deliver);
}
我的启动命令是:
varnishd -f /etc/varnish/default.vcl -s malloc,128M -T 127.0.0.1:2000 -a 0.0.0.0:8080
我打电话的网址是:
http://vbox.local:8080/varnish-tests/index.php
我的 index.php 文件只有:
<?php
session_start();
echo time();
我想问问社区这看起来是正确的还是我错了。本质上我只是不确定为什么我必须添加 beresp.ttl = 24h 才能最终在清漆中使用页面缓存。
我以为我不需要这个。
任何建议都非常感谢。
谢谢!
亲切的问候。