2013-07-15 1 views
0

내 이상한 케이스가 VCL과 함께 Varnish에서 구현 가능한지 궁금합니다. 내 애플리케이션은 매우 짧은 대기 시간 (가능한 경우 하위 밀리 초)의 캐시 가능한 API 서버에서 응답을 수신해야합니다. 응용 프로그램은 "비어있는"응답이 적절하게 처리되고 (경우에 따라 유효한 응답이되는) 방식으로 작성되며 API는 비어 있지 않은 응답이 오랫동안 유효하도록 설계되었습니다 (예 : 일).합성 응답을 반환 한 다음 바니시에서 객체를 가져 와서 캐시합니까?

  1. 시도 캐시 미스에 주어진 API 호출
  2. 의 캐시 된 응답을 조회 (반환) 즉시, : 그것은 있도록

    그래서, 내가하고 싶은 것이 구성 광택입니다 에 "빈"응답을 반환하고, # 2 캐시 미스이었다 URL에 미래의 호출에 백엔드

  3. 에 대한 요청을 대기,

만들하는 것이 가능 지금은 캐시 된 응답을 반환 바니쉬 AC 이런 식으로 VCL 만 사용하면됩니까? 그렇지 않다면 VMOD을 쓸 수 있습니까? 그렇다면 포인터, 팁 등을 크게 높이십시오!)

답변

0

VCL만으로는 가능하지 않겠지 만 VCL 일부 클라이언트 논리를 사용하면 쉽게 관리 할 수 ​​있습니다.

vcl_miss에서 오류 200을 사용하여 빈 문서를 반환하고 기본값 인 경우 X-Try-Again이라는 응답 헤더를 설정합니다. 클라이언트 응용 프로그램에서 X-Try-Again을 사용하여 빈 응답을 받으면 비동기 적으로 동일한 리소스를 요청하지만 X-Always-Fetch라는 헤더를 요청에 추가합니다. 앱이 응답을 기다리지 않고 도착한 후에는 아무 것도하지 않습니다. 또한 vcl_miss에서 동일한 X-Always-Fetch 헤더가 있는지 확인하십시오. 존재하는 경우 빈 문서 대신 리턴 (반입)하십시오. 이렇게하면 백엔드에서 내용을 요청하고 이후 요청에 대해 캐시합니다. http://lassekarstensen.wordpress.com/2012/10/11/varnish-trick-serve-stale-content-while-refetching/

: 구현이 당신의 클라이언트 코드를 사용하는 것에 비해 나에게 조금 투박하지만

또한 도움을 제공 할 수있다이 문서 발견

관련 문제