버전 관리를 통해 여러 서버 앞에서 광택 처리

버전 관리를 통해 여러 서버 앞에서 광택 처리

여러 웹 서버 앞에 Varnish가 있습니다. 이를 기본으로 varnish로 실행하거나 nginx를 통한 업스트림 검사를 통해 실행할 수 있지만 정적 콘텐츠만 캐시되며(놀랍지 않습니다) 쿼리 문자열도 존중합니다.

/main.css?v=1/main.css?=v2별도로 캐시됩니다 .

저는 서버를 하나씩 업데이트합니다. 사실 이 모든 작업은 가동 중지 시간, 일반적인 배포 작업 없이 정확히 동시에 수행될 수 없습니다.

main.css업데이트되는 경우하나백엔드를 사용하고 새 웹페이지 버전에 따라 요청을 varnish 및 request로 보냅니다. /main.css?=v2이전 버전이 있고 아직 업데이트되지 않은 컴퓨터에서 파일을 계속 찾을 수 있으므로 main.css이제 다음과 같이 캐시에 v1을 가져옵니다. v2이며 TTL이 만료되지 않는 한(너무 늦음) 할 수 있는 일이 없습니다.

요청을 통해 캐시를 수동으로 무효화할 수 있습니다. 괜찮습니다.

바니시 피드백을 위한 소프트웨어 재작성을 수동으로 방해하지 않는 자동화된 솔루션이 있습니까? 좋다:

  1. 프로브가 양호한 후 백엔드가 나타날 때 캐시를 만료시키는 것이 가능합니까?
  2. 다른 건 없어?

감사해요

답변1

이 코드를 로드하거나 바니시 버전에 맞게 조정한 경우 제거하려는 항목과 일치하는 요청 URL을 사용하여 PURGE 유형의 요청을 보내 바니시 캐시에서 항목을 지울 수 있습니다. 이를 사용하면 기본적으로 cURL 명령 또는 유사한 명령을 통해 Varnish 서버에 대한 배포 프로세스가 끝날 때 선택적으로 제거를 자동화할 수 있습니다.

https://github.com/dreamhost/varnish-vcl-collection/blob/master/lib/purge.vcl

관련 정보