【发布时间】:2011-04-13 06:52:24
【问题描述】:
我一直在积极地谷歌搜索,但没有运气。
我在使用 Varnish 时效果很好,但我想在单个服务器 (Apache) 上托管多个网站,而不用 Varnish 缓存所有网站。
我可以通过 URL 指定要缓存的网站吗?
谢谢
【问题讨论】:
标签: performance apache dns varnish
我一直在积极地谷歌搜索,但没有运气。
我在使用 Varnish 时效果很好,但我想在单个服务器 (Apache) 上托管多个网站,而不用 Varnish 缓存所有网站。
我可以通过 URL 指定要缓存的网站吗?
谢谢
【问题讨论】:
标签: performance apache dns varnish
用 hash
替换查找default.vcl:
sub vcl_recv {
# dont cache foo.com or bar.com - optional www
if (req.http.host ~ "(www\.)?(foo|bar)\.com") {
return(pass);
}
# cache foobar.com - optional www
if (req.http.host ~ "(www\.)?foobar\.com") {
return(hash);
}
}
【讨论】:
是的,
在 vcl_recv 中,您只需匹配您希望 不 缓存并传递它们的主机。像这样的东西(未经测试):
vcl_recv {
# dont cache foo.com or bar.com - optional www
if (req.host ~ "(www)?(foo|bar).com") {
return(pass);
}
}
【讨论】:
sub vcl_recv 和req.http.host
(在评论后编辑)它是req.http.host,所以在你的vcl文件(例如default.vcl)中:
sub vcl_recv {
# dont cache foo.com or bar.com - optional www
if (req.http.host ~ "(www\.)?(foo|bar)\.com") {
pass;
}
# cache foobar.com - optional www
if (req.http.host ~ "(www\.)?foobar\.com") {
lookup;
}
}
在 varnish3-vcl 中:
sub vcl_recv {
# dont cache foo.com or bar.com - optional www
if (req.http.host ~ "(www\.)?(foo|bar)\.com") {
return(pass);
}
# cache foobar.com - optional www
if (req.http.host ~ "(www\.)?foobar\.com") {
return(lookup);
}
}
【讨论】: