Кеш лаку - типовий TTL?


23

Я виявив, що я можу встановити TTL у лаці так, як у моєму файлі VCL:

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

Але який параметр за замовчуванням (якщо припустити, що сервер не встановлює кеш-керуючий заголовок)?


Схоже, я знайшов відповідь: 120 секунд - це в логіці VCL за замовчуванням.
Аде

Відповіді:


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 секунд.


Де ви знайшли шаблон за замовчуванням?
Ніл


Існує default.vcl, який постачається з лаком щонайменше 3.0.3, у якому коментовані всі підпрограми конфігурації за замовчуванням. Конфігурацію за замовчуванням 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>теги, щоб побачити версію випуску Varnish.
Денні Томас

34

TTL за замовчуванням може передаватися командою varnishd за допомогою -tперемикача командного рядка і, ймовірно, походить з файлу властивостей вашої файлової системи. Про систему CentOS я дивлюся на це встановлюється з допомогою DEFAULT_TTLз /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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.