Grace Mode

Bu bölüm boyunca, kararlı bir arka uç hizmeti sağlamaya odaklandık, böylece Varnish, en ufak bir sorun olmadan arka uç verilerine erişebildi:

  • Arka uç sağlığını ölçme

  • Sağlık kontrol probları ekleme

  • Yükü dağıtmak için direktörler ekleme

Ancak önemli bir soru cevapsız kalıyor: eğer arka uç yoksa, ne yaparız? grace bu noktada devreye giriyor. Eğer önbellekte nesne yok ise ve arka uca ulaşılamıyorsa daha ne kadar önbellekteki nesneyi sunacağımızı grace kullanarak belirliyoruz.

Belli bir grace süresi tayin edersek, temelde Varnish'e, yaşam sürelerinin ötesinde nesnelere hizmet edebileceğini söylüyoruz. Bu nesneler “bayat” olarak kabul edilir ve grace süresi tarafından tanımlanan bir süre için güncellenmiş nesne olmadığı sürece sunulur.

Yerleşik VCL içindeki vcl_hit alt yordamı:

sub vcl_hit {
  if (obj.ttl >= 0s) {
    // A pure unadultered hit, deliver it
    return (deliver);
  }
  if (obj.ttl + obj.grace > 0s) {
    // Object is in grace, deliver it
    // Automatically triggers a background fetch
    return (deliver);
  }
  // fetch & deliver once we get the result
  return (miss);
}
  • Nesnenin süresi dolmamışsa (obj.ttl> = 0s), nesneyi sunmaya devam edin.

  • Nesne süresi dolmuşsa, ancak kalan süre (obj.ttl + obj.grace> 0s) ise, hizmet vermeye devam edin.

  • Aksi takdirde, yeni bir sürüm al ve isteği sırala.

Last updated