Я установил зеркало кэша Varnish так, чтобы оно располагалось перед файловым сервером, но мне кажется, что оно бесконечно повторно загружает данные с моего файлового сервера.
Всего около 100 ГБ данных, но пока Varnish загрузил 800 ГБ с моего файлового сервера.
Я использую файл VCL по умолчанию, который поставляется с Varnish, и заголовки ответов для файлов, обслуживаемых файловым сервером, аналогичны следующим:
HTTP/1.1 200 OK
Cache-Control: max-age=290304000, public
Content-Type: image/jpeg
Expires: Wed, 29 Dec 2010 21:38:33 GMT
Server: Microsoft-IIS/7.0
E-Tag: "8b4723296ab697530768f18b1378b269"
Content-Disposition: inline; filename=image046.jpg;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 23 Dec 2010 05:38:33 GMT
Content-Length: 100592
Я начинаю varnishd со следующих вариантов:
varnish/sbin/varnishd -a 0.0.0.0:80 -f varnish/etc/varnish/default.vcl -s file,varnish/var/lib/varnish/varnish_storage.bin,100G
sub vcl_recv {
if (req.url ~ "\.(cur|gif|jpg|jpeg|swf|css|js|flv|mp3|mp4|pdf|ico|png)(\?.*|)$") {
unset req.http.cookie;
unset req.http.Accept-Encoding;
unset req.http.Vary;
}
}
Если ваши запросы содержат файлы cookie, они по умолчанию будут переданы в серверную часть. Удаление кодировки и изменения немного нормализует ситуацию, так что вам не нужно хранить несколько копий ваших изображений в кеше. Кроме того, я думаю, что 100G может быть немного чрезмерным для вашего резервного хранилища, вы можете подумать о чем-то более близком к объему оперативной памяти, который у вас есть в машине.