我是新来的清漆缓存,并有一个问题,我希望我可以得到一些帮助。清漆缓存没有缓存与会话PHP除非后端TTL改变
我有一个非常简单和基本的设置,但它不工作,因为我明白 它应该由于某种原因。
这与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。
这只是如果我添加此子vcl_fetch 的PHP将缓存:
set beresp.ttl = 24h;
我的问题是这是正确的?
我不认为我需要改变后端响应的ttl 。我认为只是不想设置 cookie会强制PHP w /会话缓存。
我的完整的默认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最终有页面缓存 在清漆。
我以为我不需要这个。
任何建议非常感谢。
谢谢!
亲切的问候。
这符合我的经验 - 我已经设置了我想要清漆缓存在我的VCL中的任何东西的ttls。如果你不给它一个ttl,你会期望清漆能够缓存多久? – 2011-03-29 02:06:58
嘿,弗兰克。您的评论非常有意义。我只是不确定,因为我没有注意到有关设置与缓存cookie相关的beresp.ttl的文档中的任何内容。也许我在文档中记录了这一点。我花了30多分钟的时间挠挠我的脑袋,直到我想出了它。再次感谢。 – Jacob 2011-03-29 02:10:43
缓存处理会话的PHP响应时需要注意的事项:PHP默认* * [发送反缓存标题](http://us2.php.net/manual/en/function.session-cache-limiter。 PHP)。如果Varnish服从这些标题,如果您期待特定的缓存行为(一旦您解决了当前的问题,这完全不相关),则可能会遇到困难。 – Charles 2011-03-29 02:14:36