Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Varnish Cache, web sunucusunun önünde çalışan ve HTTP yanıtlarını yapılandırılan depolama alanında saklayarak sonraki isteklerde uygulama sunucusuna gitmeden sunabilen bir ters proxy ve HTTP önbellekleme yazılımıdır. Özellikle WordPress, PHP tabanlı uygulamalar ve yoğun trafik alan içerik sitelerinde veritabanı ve uygulama sunucusunun yükünü azaltmak, yanıt süresini kısaltmak için kullanılır.

Varsayılan bellek tabanlı depolamanın yanında dosya destekli seçenekler de bulunabilir; kapasite ve bellek gereksinimi gerçek kuruluma göre seçilir. Varnish genellikle istemci ile Apache, Nginx veya uygulama sunucusu arasına yerleştirilir. İstemci bir sayfa istediğinde Varnish önce kendi önbelleğine bakar. Uygun ve süresi dolmamış bir yanıt varsa buna cache hit denir ve yanıt doğrudan Varnish tarafından verilir. Kayıt yoksa veya geçersizse cache miss oluşur; Varnish isteği arka uç sunucuya iletir, aldığı yanıtı uygun koşullarda saklar ve istemciye gönderir.

Basit bir örnek​


Varsayımsal olarak example.com/haber/1 adresi ilk kez istendiğinde uygulama sunucusu PHP kodunu çalıştırır, veritabanından içeriği alır ve HTML yanıtı üretir. Yanıtın başlıkları ve VCL kuralları uygunsa Varnish bu yanıtı önbelleğe alır. Aynı sayfaya gelen sonraki isteklerde HTML yeniden oluşturulmadan Varnish tarafından verilebilir.

Bu davranış, içeriği sık değişmeyen herkese açık sayfalarda faydalıdır. Ancak yönetim paneli, sepet, hesap sayfası veya kişiye özel içerik gibi yanıtların kullanıcıya göre değiştiği yerlerde aynı önbellekleme davranışı yanlış kullanıcıya veri gösterilmesine neden olabilir. Bu nedenle Varnish yalnızca hızlandırma aracı değil, aynı zamanda hangi yanıtların saklanacağına karar verilmesi gereken bir HTTP katmanıdır.

Hangi içerikler önbelleğe alınmalı?​


Önbellekleme kararı, sayfanın herkese aynı yanıtı verip vermediğine ve ne kadar hızlı güncellenmesi gerektiğine göre verilmelidir.

İçerik türüGenel kararGerekçe
Herkese açık makale veya kategoriGenellikle önbelleğe alınabilirAynı HTML birçok ziyaretçiye sunulabilir
Giriş yapmış kullanıcı sayfasıGenellikle hariç tutulurYanıt kullanıcıya özel olabilir
Sepet, ödeme ve hesap işlemleriHariç tutulurOturum ve işlem durumu değişkendir
Görsel, CSS ve JavaScript dosyalarıUygun süreyle saklanabilirGenellikle herkese aynı dosya verilir

Tablodaki kararlar kesin bir kural değildir. Uygulamanın gönderdiği Cache-Control, Set-Cookie ve benzeri HTTP başlıkları incelenmeli; Varnish yapılandırması bu davranışlarla uyumlu hazırlanmalıdır. Önbellekteki içeriğin ne kadar süre tutulacağı da içeriğin güncellenme sıklığına göre belirlenir.

Kurulum ve kullanımda izlenecek yol​


Varnish tek başına uygulama hatalarını düzeltmez. Önce arka uç uygulamanın doğrudan ve doğru yanıt verdiği doğrulanmalıdır. Ardından şu sırayla ilerlemek güvenlidir:

  1. Varnish'in önüne konacağı sunucuyu ve arka uç uygulama sunucusunu belirleyin. Varnish'in isteği doğru porta ve doğru protokole ilettiğinden emin olun.
  2. İlk aşamada yalnızca herkese açık, oturum gerektirmeyen basit bir sayfayı önbellekleyecek şekilde yapılandırma yapın.
  3. Çerez, yetkilendirme başlığı, POST isteği ve yönetim yolları gibi kişiye özel veya durum değiştiren istekleri önbellek dışında bırakın.
  4. Önbellek durumunu yanıt başlıkları veya Varnish günlükleri üzerinden kontrol edin. Kontrollü örnekte ilk isteğin miss, sonraki uygun isteğin hit olması beklenir; bunun için aynı önbellek anahtarı, saklanabilir yanıt ve yeterli yaşam süresi gerekir. Her kurulum X-Cache gibi bir yanıt başlığını kendiliğinden eklemez; gerektiğinde Varnish günlükleri ve sayaçlarını kullanın.
  5. İçerik güncellendiğinde ilgili URL'leri temizleme veya geçersiz kılma yöntemini uygulayın. Aksi halde kullanıcılar eski HTML'i önbellek süresi dolana kadar görebilir.
  6. Son olarak giriş yapma, çıkış yapma, form gönderme, sepet ve ödeme gibi işlemleri ayrı ayrı test edin. Önbellekten yanlış içerik geliyorsa ilgili yolu veya çerezi kapsam dışı bırakın.

Sık yapılan hatalar​


En yaygın hata, tüm GET isteklerini koşulsuz olarak önbelleğe almaktır. GET yöntemi kullanılması, yanıtın mutlaka herkese ortak olduğu anlamına gelmez. Oturum çerezi taşıyan, yetkilendirme isteyen veya kişisel veri içeren yanıtlar ayrıca değerlendirilmelidir.

Bir diğer hata da içerik güncelleme sonrası önbelleği temizlememektir. Uygulama doğru çalışsa bile Varnish eski yanıtı sunuyorsa sorun uygulama kodunda değil, geçersiz kılma politikasındadır. Ayrıca Varnish'in arka uç sunucusuna erişememesi, yanlış port veya TLS katmanının yanlış konumlandırılması cache sorunu gibi yorumlanmamalıdır; önce doğrudan arka uç yanıtı test edilmelidir.

Sık sorulan sorular​

Yenilenen yazı bazı ziyaretçilerde neden hâlâ eski görünüyor?​

Varnish dışında CDN ve tarayıcıda da ayrı kopya bulunabilir. İlgili URL’nin hangi katmandan geldiğini inceleyin; Varnish temizliği diğer bütün katmanları otomatik boşaltmaz. Tek URL için geçersiz kılma ve içerik sürümleme politikasını önceden belirleyin.

Varnish yeniden başlatılınca önbellek yedekten geri gelir mi?​

Önbelleği uygulamanın kalıcı veri yedeği gibi görmeyin. Depolama ve sürüm davranışına göre kopyalar yeniden oluşturulabilir; ani cache boşalması arka uç yükünü artırabilir. Başlangıç ve ısınma planını yapın, asıl içeriğin origin ve bağımsız yedeklerde korunmasını sağlayın.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.