여러 웹 서버 앞에 Varnish가 있습니다. 이를 기본으로 varnish로 실행하거나 nginx를 통한 업스트림 검사를 통해 실행할 수 있지만 정적 콘텐츠만 캐시되며(놀랍지 않습니다) 쿼리 문자열도 존중합니다.
/main.css?v=1
/main.css?=v2
별도로 캐시됩니다 .
저는 서버를 하나씩 업데이트합니다. 사실 이 모든 작업은 가동 중지 시간, 일반적인 배포 작업 없이 정확히 동시에 수행될 수 없습니다.
main.css
업데이트되는 경우하나백엔드를 사용하고 새 웹페이지 버전에 따라 요청을 varnish 및 request로 보냅니다. /main.css?=v2
이전 버전이 있고 아직 업데이트되지 않은 컴퓨터에서 파일을 계속 찾을 수 있으므로 main.css
이제 다음과 같이 캐시에 v1을 가져옵니다. v2이며 TTL이 만료되지 않는 한(너무 늦음) 할 수 있는 일이 없습니다.
요청을 통해 캐시를 수동으로 무효화할 수 있습니다. 괜찮습니다.
바니시 피드백을 위한 소프트웨어 재작성을 수동으로 방해하지 않는 자동화된 솔루션이 있습니까? 좋다:
- 프로브가 양호한 후 백엔드가 나타날 때 캐시를 만료시키는 것이 가능합니까?
- 다른 건 없어?
감사해요
답변1
이 코드를 로드하거나 바니시 버전에 맞게 조정한 경우 제거하려는 항목과 일치하는 요청 URL을 사용하여 PURGE 유형의 요청을 보내 바니시 캐시에서 항목을 지울 수 있습니다. 이를 사용하면 기본적으로 cURL 명령 또는 유사한 명령을 통해 Varnish 서버에 대한 배포 프로세스가 끝날 때 선택적으로 제거를 자동화할 수 있습니다.
https://github.com/dreamhost/varnish-vcl-collection/blob/master/lib/purge.vcl