清漆:仅缓存特定域

时间:2010-09-16 15:14:54

标签: performance apache dns varnish

我一直在谷歌搜索,但没有运气。

我正在使用Varnish,效果很好,但我想在一台服务器(Apache)上托管多个网站,而不使用Varnish缓存所有这些网站。

我可以通过网址指定要缓存的网站吗?

由于

3 个答案:

答案 0 :(得分:31)

(评论后编辑)这是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);
   }
}

答案 1 :(得分:6)

是,

在vcl_recv中,您只需匹配您希望 not 缓存并传递它们的主机。像这样(未经测试):

vcl_recv {
   # dont cache foo.com or bar.com - optional www
   if (req.host ~ "(www)?(foo|bar).com") {
     return(pass);
   }
}

答案 2 :(得分:1)

对于清漆4

哈希

替换查找

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);
   }
}