Selam! Bir Vernik tedarikçisi olarak, etkili Vernik Yapılandırma Dili (VCL) kodu yazmanın ne kadar önemli olduğunu ilk elden gördüm. Bu blog yazısında VCL'yi bir profesyonel gibi nasıl yazacağınıza dair bazı ipuçları ve püf noktaları paylaşacağım.
VCL'nin Temellerini Anlamak
Öncelikle VCL'nin ne olduğundan bahsedelim. Varnish, web sunucunuzun önünde bulunan bir web uygulaması hızlandırıcısıdır (önbellek olarak da bilinir). VCL, Varnish'i yapılandırmak için kullanılan programlama dilidir. Hangi isteklerin önbelleğe alınacağı, bunların ne kadar süreyle önbelleğe alınacağı ve bir önbellek kaybı meydana geldiğinde ne yapılacağı gibi Varnish'in nasıl davranacağını kontrol etmenize olanak tanır.
VCL kodu, diğer programlama dillerindeki işlevlere benzer şekilde alt yordamlar halinde düzenlenmiştir. Her alt yordamın belirli bir amacı vardır ve Varnish bu alt yordamları istek ve yanıt sürecinin farklı aşamalarında çağırır. En önemli alt programlardan bazıları şunlardır:vcl_recv,vcl_hash,vcl_backend_fetch, Vevcl_deliver.
Basit bir VCL Yapılandırmasıyla Başlamak
VCL'ye yeni başladığınızda basit bir yapılandırmayla başlamak iyi bir fikirdir. İşte temel bir VCL dosyası örneği:


vcl4.0; arka uç varsayılanı { .host = "127.0.0.1"; .port = "8080"; } sub vcl_recv { dönüş (geçiş); } sub vcl_backend_response { return (teslim); } sub vcl_deliver { return (teslim); }
Bu örnekte, bir arka uç sunucusu tanımlıyoruz.127.0.0.1:8080.vcl_recvVarnish bir istemci isteği aldığında alt program çağrılır. Bu durumda, isteği önbelleğe almadan arka uç sunucusuna iletebiliriz.vcl_backend_responseVarnish arka uç sunucusundan bir yanıt aldığında alt program çağrılır ve biz de yanıtı müşteriye iletiriz.vcl_deliverAltprogram aynı zamanda yanıtı istemciye iletmek için de kullanılır.
Önbelleğe Alma Stratejileri
Varnish'i kullanmanın ana nedenlerinden biri, içeriği önbelleğe almak ve arka uç sunucularınızdaki yükü azaltmaktır. Uygulamanızın ihtiyaçlarına bağlı olarak VCL'de kullanabileceğiniz çeşitli önbellekleme stratejileri vardır.
Statik İçeriği Önbelleğe Alma
Resimler, CSS dosyaları ve JavaScript dosyaları gibi statik içerik, önbelleğe alma için mükemmel bir adaydır. Varnish'i bu dosyaları uzun süre önbelleğe alacak şekilde yapılandırabilirsiniz. Statik içeriğin nasıl önbelleğe alınacağına ilişkin bir örnek:
sub vcl_recv { if (req.url ~ "\.(jpg|jpeg|png|gif|css|js)$") { return (hash); } dönüş (geçiş); }
Bu örnekte istek URL'si şununla bitiyorsa:.jpg,.jpeg,.png,.gif,.css, veya.jsisteğimizi şu adrese gönderiyoruz:vcl_hashönbelleğe alınacak alt program. Aksi takdirde isteği arka uç sunucusuna iletiriz.
Dinamik İçeriği Önbelleğe Alma
Önbelleğe alınan içeriğin hala geçerli olduğundan emin olmanız gerektiğinden, dinamik içeriğin önbelleğe alınması biraz daha karmaşık olabilir. Dinamik içerik için önbelleği yönetmek amacıyla önbellek etiketleri ve yedek anahtarlar gibi teknikleri kullanabilirsiniz. Önbellek etiketlerinin nasıl kullanılacağına ilişkin bir örnek:
sub vcl_backend_response { if (beresp.http.X-Cache-Tag) { set beresp.http.X-Cache-Tags = beresp.http.X-Cache-Tag; } dönüş (teslim etme); } sub vcl_purge { if (req.http.X-Cache-Tags) { ban("obj.http.X-Cache-Tags ~ " + req.http.X-Cache-Tags); } return (synth(200, "Temizlendi")); }
Bu örnekte, arka uç sunucusuX-Önbellek Etiketibaşlığına kopyalıyoruzX-Önbellek-EtiketleriVarnish yanıtındaki başlık. Bir temizleme isteği geldiğindeX-Önbellek-Etiketleribaşlık, önbellek etiketleriyle eşleşen tüm nesneleri yasaklıyoruz.
Önbellek Eksiklerini İşleme
Bir önbellek kaybı meydana geldiğinde, Varnish'in içeriği arka uç sunucudan alması gerekir. Şunu kullanabilirsiniz:vcl_backend_fetchVarnish'in içeriği nasıl getireceğini kontrol eden alt program. İşte bir örnek:
sub vcl_backend_fetch { set bereq.http.User-Agent = "Vernik Önbelleği"; geri dön (getir); }
Bu örnekte,Kullanıcı Aracısıİçeriği getirmeden önce arka uç sunucusuna "Vernik Önbelleği" isteğindeki başlık.
Gelişmiş VCL Özelliklerini Kullanma
Vernik'in davranışını özelleştirmek için kullanabileceğiniz birçok gelişmiş özelliği vardır.
HTTP Başlıklarının Manipülasyonu
Başlık eklemek, kaldırmak veya değiştirmek için Varnish'teki HTTP başlıklarını değiştirebilirsiniz. Özel üstbilginin nasıl ekleneceğine ilişkin bir örnek:
sub vcl_deliver { set resp.http.X-Custom-Header = "Bu özel bir başlıktır"; iade (teslimat); }
Bu örnekte, adında özel bir başlık ekliyoruz.X-Özel-Başlıkyanıtı müşteriye teslim etmeden önce.
Koşullu Mantık
İsteğe veya yanıta göre kararlar vermek için Varnish'te koşullu mantığı kullanabilirsiniz. İstekleri yeniden yönlendirmek için koşullu mantığın nasıl kullanılacağına dair bir örnek:
sub vcl_recv { if (req.url == "/eski-sayfa") { return (synth(301, "http://example.com/yeni-sayfa")); } dönüş (geçiş); }
Bu örnekte istek URL'si şu şekildeyse:/eski sayfa301 yönlendirmesi gönderiyoruzhttp://example.com/yeni-sayfa.
Vernik Ürünlerimiz
Vernik tedarikçisi olarak yüksek kaliteli vernik ürün yelpazesi sunuyoruz. Bizim göz atınSu Bazlı Vernik,Su Bazlı Mat Son Kat, VeSu Bazlı Poliüretan Parlaklık. Bu ürünler çeşitli uygulamalar için uygundur ve mükemmel koruma ve kaplama sağlayabilir.
Çözüm
Etkili VCL kodu yazmak zaman ve pratik gerektirir, ancak bu çabaya değer. VCL'nin temellerini anlayarak, uygun önbelleğe alma stratejilerini kullanarak ve gelişmiş özelliklerden yararlanarak web uygulamanızın performansını optimize edebilir ve arka uç sunucularınızdaki yükü azaltabilirsiniz.
Vernik ürünlerimizle ilgileniyorsanız veya VCL konfigürasyonu hakkında daha fazla bilgiye ihtiyacınız varsa, satın alma görüşmesi için bizimle iletişime geçmekten çekinmeyin. İhtiyaçlarınıza en uygun çözümleri bulmanıza yardımcı olmak için buradayız.
Referanslar
- Vernik Dokümantasyonu
- Vernik ve web önbelleğe alma hakkında çeşitli çevrimiçi kaynaklar
