바니쉬가 캐싱되지 않는 것 같습니다.

바니쉬가 캐싱되지 않는 것 같습니다.

파일 서버 앞에 Varnish 캐시 미러를 설치했는데 파일 서버에서 데이터를 끝없이 다시 다운로드하는 것 같습니다.

총 100GB 정도의 데이터가 있는데 지금까지 Varnish가 내 파일 서버에서 800GB를 다운로드했습니다.

저는 Varnish와 함께 제공되는 기본 VCL 파일을 사용하고 있으며 파일 서버에서 제공하는 파일에 대한 응답 헤더는 다음과 유사합니다.

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

답변1

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

요청에 쿠키가 포함되어 있으면 기본적으로 백엔드로 전달됩니다. 인코딩을 제거하고 변경하면 상황이 좀 더 정규화되므로 캐시에 이미지 사본 몇 개를 유지할 필요가 없습니다. 또한 백업 저장소에 100G가 약간 과도할 수 있다고 생각합니다. 컴퓨터에 있는 RAM 용량에 더 가까운 것을 고려할 수도 있습니다.

관련 정보