Selam! Bir Varnish tedarikçisi olarak, Varnish VCL'de HTTP önbellekleme başlıklarını ayarlamanın web sitesi performansı açısından nasıl çığır açıcı olabileceğini ilk elden gördüm. Bu blogda size süreci adım adım anlatacağım.
Öncelikle HTTP önbellekleme başlıklarının neden bu kadar önemli olduğunu anlayalım. Bir kullanıcı bir web sitesini ziyaret ettiğinde tarayıcı, sunucudan HTML, CSS, JavaScript ve resimler gibi kaynakları ister. Düzgün önbellekleme olmadığında, sunucunun bu istekleri her seferinde işlemesi gerekir; bu da özellikle trafiğin yoğun olduğu dönemlerde siteyi yavaşlatabilir. HTTP önbellekleme başlıkları, tarayıcıya ve diğer aracı önbelleklere (Varnish gibi), belirli bir kaynağı ne kadar süreyle depolayabileceklerini ve sunucuya geri dönmeye gerek kalmadan onu yeniden kullanabileceklerini bildirir.


Vernik VCL'nin Temelleri
Varnish Yapılandırma Dili (VCL), Varnish'in nasıl davranacağını kontrol etmek için kullanılır. Bu, Varnish'in istekleri ve yanıtları ele alırken izlediği bir dizi kurala benzer. VCL'de önbelleğe alma başlıklarını ayarlamak için odaklanacağımız birkaç önemli alt rutin vardır:vcl_recv,vcl_backend_response, Vevcl_deliver.
vcl_recv
vcl_recvVarnish bir istemciden (genellikle bir tarayıcı) bir istek aldığında alt program çağrılır. Burası bir isteğin önbelleğe alınıp alınmayacağına karar vermek için harika bir yerdir. Örneğin, sık sık değişen dinamik içeriğe ilişkin istekler gibi belirli türdeki istekleri hariç tutmak isteyebilirsiniz.
sub vcl_recv { # POST isteklerini önbelleğe almayın if (req.method == "POST") { return (pass); } # URL modellerine göre buraya daha fazla koşul ekleyebilirsiniz if (req.url ~ "^/admin/") { return (pass); } }
Bu kodda, Varnish'e POST isteklerini önbelleğe almamasını söylüyoruz çünkü bunlar genellikle form gönderimlerini içerir ve muhtemelen dinamiktir. Ayrıca şununla başlayan istekleri de hariç tutuyoruz:/yönetici/muhtemelen sitenin dinamik içeriğe sahip bir yönetim alanı için olduklarından.
vcl_backend_response
vcl_backend_responseVarnish arka uç sunucusundan bir yanıt aldığında alt program çağrılır. Önbellek başlıklarını ayarlayabileceğimiz veya değiştirebileceğimiz yer burasıdır.
sub vcl_backend_response { # Tüm yanıtlar için varsayılan önbellek süresini ayarlayın beresp.ttl = 3600s olarak ayarlayın; # İçerik türüne göre farklı önbellek süreleri ayarlayabilirsiniz if (beresp.http.Content - Type ~ "^text/html") { set beresp.ttl = 1800s; } # Özel bir önbellek ekleyin - kontrol başlığı seti beresp.http.Cache - Control = "public, max - age=3600"; }
Burada, tüm yanıtlar için varsayılan Yaşam Süresini (TTL) 3600 saniyeye (1 saat) ayarlıyoruz. HTML içeriği için TTL'yi 1800 saniyeye (30 dakika) düşürüyoruz çünkü HTML daha sık değişebilmektedir. Ayrıca bir tane de ekliyoruzÖnbellek - Kontroltarayıcıya ve diğer önbelleklere kaynağın nasıl işleneceğini söyleyen standart bir HTTP başlığı olan başlık.
vcl_deliver
vcl_deliveraltprogram, Varnish'in istemciye yanıtı göndermesinden hemen önce çağrılır. Bunu, istemcinin göreceği üstbilgileri eklemek veya değiştirmek için kullanabilirsiniz.
sub vcl_deliver { # Yanıtın Varnish tarafından önbelleğe alındığını belirtmek için özel bir başlık ekleyin set resp.http.X - Cached - By = "Varnish"; }
Bu örnekte özel bir başlık ekliyoruzX - Önbelleğe Alınmış - Tarafındanmüşteriye yanıtın Varnish tarafından önbelleğe alındığını bildirmek için.
Gelişmiş Önbelleğe Alma Senaryoları
Önbelleğe alma başlıklarını ayarlamak için bazı daha gelişmiş senaryolara bakalım.
Önbellek Bozma
Bazen tarayıcıyı, hâlâ önbellek süresi içinde olsa bile kaynağın yeni bir sürümünü almaya zorlamak istersiniz. Bunu, kaynak URL'sine bir sürüm numarası veya karma ekleyerek yapabilirsiniz. VCL'de, sürüm numarasını arka uca aktarmadan önce URL'den çıkararak bu sorunu çözebilirsiniz.
sub vcl_recv { if (req.url ~ "\?v=[0 - 9]+$") { set req.url = regsub(req.url, "\?v=[0 - 9]+$", ""); } }
Bu kod şunları kaldırır:?v=123Böylece Varnish, kaynağı sürüm numarası olmadan orijinal URL'ye göre önbelleğe alabilir.
Koşullu Önbelleğe Alma
Bir kaynağı yalnızca belirli koşullar yerine getirildiğinde önbelleğe almak isteyebilirsiniz. Örneğin, bir sayfayı yalnızca belirli bir HTTP durum koduna sahip olması durumunda önbelleğe alabilirsiniz.
sub vcl_backend_response { if (beresp.status == 200) { set beresp.ttl = 3600s; set beresp.http.Cache - Kontrol = "genel, maksimum - yaş=3600"; } else { set beresp.ttl = 0s; beresp.http.Cache'i ayarla - Kontrol = "önbellek yok"; } }
Burada, başarılı yanıtları (durum kodu 200) bir saat boyunca önbelleğe alıyoruz, ancak diğer yanıtları önbelleğe almıyoruz.
Vernik Ürünlerimizin Kullanımı
Şirketimizde, HTTP önbelleğe alma başlıklarının kurulumunu ve yönetimini daha da kolaylaştırabilen Vernik ile ilgili bir dizi ürün sunuyoruz. Örneğin, bizimSu Bazlı Mat Son Katoptimize edilmiş önbelleğe alma özelliğinden yararlanırken aynı zamanda pürüzsüz, mat bir görünüm isteyen web siteleri için mükemmel bir seçenektir. Özel ihtiyaçlarınıza uyacak şekilde kolayca özelleştirebileceğiniz önceden yapılandırılmış VCL şablonlarıyla birlikte gelir.
BizimSu Bazlı Poliüretan Parlaklıkbaşka bir mükemmel seçimdir. Çok parlak bir görünüm sağlar ve yerleşik gelişmiş önbellekleme özelliklerine sahiptir. Gereksinimlerinize bağlı olarak, farklı türdeki kaynakları farklı önbellek süreleriyle önbelleğe almak için bunu kullanabilirsiniz.
Daha genel amaçlı bir çözüm arıyorsanız,Su Bazlı Vernikharika bir seçenektir. Web sitenizin kaynakları için açık ve koruyucu bir katman sunar ve verimli önbellekleme başlıklarının ayarlanmasına yardımcı olur.
Satın Alma İçin Bize Ulaşın
Varnish ürünlerimiz hakkında daha fazla bilgi edinmek istiyorsanız veya Varnish VCL'de HTTP önbellekleme başlıklarını ayarlama konusunda yardıma ihtiyacınız varsa bizimle iletişime geçmekten çekinmeyin. Süreç boyunca size rehberlik edebilecek ve önbellek kurulumunuzdan en iyi şekilde yararlanmanıza yardımcı olabilecek bir uzman ekibimiz var. İster basit bir web sitesine sahip küçük bir işletme olun, ister karmaşık önbelleğe alma ihtiyaçları olan büyük bir kuruluş olun, yanınızdayız.
Referanslar
- Vernik Dokümantasyonu
- HTTP Önbelleğe Alma RFC (RFC 7234)
İşte karşınızda! Varnish VCL'de HTTP önbelleğe alma başlıklarını ayarlamak ilk başta biraz karmaşık görünebilir, ancak doğru bilgi ve ürünlerimizle web sitenizin performansını optimize edebilir ve kullanıcılarınıza daha iyi bir deneyim sağlayabilirsiniz.
