Лак: кешировать только конкретный домен - PullRequest
15 голосов
/ 16 сентября 2010

Я активно гуглил, но без удачи.

Я использую Varnish с отличными результатами, но я бы хотел разместить несколько сайтов на одном сервере (Apache), без Varnish, кешируя их все.

Можно ли указать, какие сайты по URL для кэширования?

Спасибо

Ответы [ 3 ]

31 голосов
/ 17 сентября 2010

(отредактировано после комментария) Это 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);
   }
}
6 голосов
/ 17 сентября 2010

Да,

в vcl_recv вы просто сопоставляете хосты, которые вы бы хотели, чтобы не кэшировали и передавали их.Примерно так (не проверено):

vcl_recv {
   # dont cache foo.com or bar.com - optional www
   if (req.host ~ "(www)?(foo|bar).com") {
     return(pass);
   }
}
1 голос
/ 16 апреля 2017

для лака 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);
   }
}
...