바니시 캐시-기본 TTL?


23

VCL 파일에서 다음과 같이 Varnish에서 TTL을 설정할 수 있음을 발견했습니다.

sub vcl_fetch {
    # 1 minute
    set obj.ttl = 1m;
}

그러나 기본 설정은 무엇입니까 (백엔드 서버가 캐시 제어 헤더를 설정하지 않는다고 가정)?


답을 찾은 것 같습니다 : 120 초-이것은 기본 VCL 논리에 있습니다.
Ade

답변:


24

이것은 기본 템플릿에 있습니다.

sub vcl_fetch {
    if (beresp.ttl <= 0s ||
        beresp.http.Set-Cookie ||
        beresp.http.Vary == "*") {
                /*
                 * Mark as "Hit-For-Pass" for the next 2 minutes
                 */
                set beresp.ttl = 120 s;
                return (hit_for_pass);
    }
    return (deliver);
}

120 초입니다.


기본 템플릿을 어디에서 찾았습니까?
Neil


기본 구성 서브 루틴이 모두 주석 처리 된 3.0.3 이상의 바니시와 함께 제공되는 default.vcl이 있습니다. 4.0 기본 설정은 여기에서 볼 수있다 : github.com/mattiasgeniar/varnish-4.0-configuration-templates/...
th3morg

2
이것은 내 관찰을 반영하지 않습니다. 기본 ttl이 120 초인 것은 사실이지만이 숫자의 소스는 스니 펫일 수 없습니다. 이 경우 ttl이없는 객체는 hit_for_pass로 표시되지만 실제로는 120 초 동안 캐시에 남아 있습니다.
Kritzefitz

내장 vcl의 소스는 github.com/varnishcache/varnish-cache/blob/master/bin/varnishd/…에 있습니다. varnish-<version>태그를 사용 하여 니스 버전의 버전을 확인하십시오.
대니 토마스

34

기본 TTL은 명령 -t행 스위치 를 통해 varnishd 명령을 통해 전달 될 수 있으며 파일 시스템의 특성 파일에서 제공 될 수 있습니다. 내가보고있는 CentOS 시스템 DEFAULT_TTL에서 from을 사용하여 설정 되었습니다 /etc/sysconfig/varnish.

varnishadm을 사용하여 라이브 설정을 볼 수 있습니다.

varnishadm param.show default_ttl

실제로, 기본 VCL 로직을 따르는 것은 캐시 불가능한 객체와 관련이 있습니다.

  sub vcl_fetch {
      if (beresp.ttl <= 0s ||
          beresp.http.Set-Cookie ||
          beresp.http.Vary == "*") {
                  /*
                   * Mark as "Hit-For-Pass" for the next 2 minutes
                   */
                  set beresp.ttl = 120 s;
                  return (hit_for_pass);
      }
      return (deliver);
  }

"객체를 캐시 할 수없는 경우-이 객체에 대한 클라이언트 요청을 2 분 동안 직접 및 동시에 백엔드로 전달하면 대기열에 넣지 마십시오"를 의미합니다.

/programming/12691489/varnish-hit-for-pass-means 에서 자세히 알아 보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.