Nginx önbellekleme (caching) ile performans artışı nasıl sağlanır? (Statik ve dinamik içerik önbellekleme)

Nginx ve Önbellekleme

Nginx, yüksek performanslı ve ölçeklenebilir bir web sunucusudur. Yüksek trafiğe sahip web sitelerinde önemli bir rol oynar. Önbellekleme, Nginx’in en önemli özelliklerinden biri olarak, web içeriğinin daha hızlı iletilmesini sağlamak amacıyla kullanılır. Önbellekleme, statik ve dinamik içerik için uygulanabilir. Statik içerikler, değişmeyen dosyalar (resimler, CSS, JS dosyaları gibi) iken, dinamik içerikler, sunucu tarafında oluşturulan ve sıklıkla değişen verilerdir.

Statik İçerik Önbellekleme

Statik içerikler, kullanıcıların talep ettiği dosyaların (örneğin, görüntüler, stil sayfaları ve javascript dosyaları) saklanmasıdır. Nginx, statik dosyaların sunulmasını hızlandırmak için çeşitli önbellekleme mekanizmaları sunar.

Statik içerikleri önbelleğe almak için Nginx konfigürasyonu aşağıdaki gibi yapılandırılabilir:

“`nginx
location /static/ {
expires 30d; 30 gün boyunca geçerli
add_header Cache-Control “public”;
}
“`

Bu yapılandırma, `/static/` dizinindeki tüm dosyalar için 30 gün boyunca önbelleğe alınacağını belirtir. Tarayıcılar, bu süre boyunca dosyanın süresinin dolup dolmadığını kontrol etmeden otomatik olarak önbellekten yükleyecektir. Böylece, sunucuya olan istek sayısı büyük ölçüde azalır ve yanıt süreleri hızlanır.

Dinamik İçerik Önbellekleme

Dinamik içerikler genellikle kullanıcı etkileşimi doğrultusunda oluşturulur ve zamanla değişir. Bu nedenle, dinamik içeriklerin önbelleğe alınması daha karmaşık bir süreçtir. Nginx, dinamik içeriklerin önbelleğe alınması için proxy ve fastcgi önbellekleme yöntemlerini kullanılabilir.

Dinamik içeriklerin önbelleğe alınması için aşağıdaki yöntemler uygundur:

Proxy Önbellekleme

Nginx, bir ters proxy sunucusu olarak çalışabilir. Proxy önbellekleme, istemciden gelen istekleri alıp, hedef sunucuya yönlendirir. Hedef sunucudan gelen yanıtı önbelleğe alarak, sonraki isteklerde bu yanıtı kullanabilir.

“`nginx
location /api/ {
proxy_pass http://backend_server;
proxy_cache my_cache;
proxy_cache_valid 200 10m; 200 yanıtları 10 dakika önbellekte tut
proxy_cache_use_stale error timeout updating; Hata durumunda eski veriyi kullan
}
“`

Bu yapılandırma, `/api/` yolundaki tüm istekler için yanıtların 10 dakika boyunca önbellekte tutulmasını sağlar. Eğer önbellekte veri yoksa veya güncellenmesi gerekiyorsa, hedef sunucudan veri alınır.

FastCGI Önbellekleme

Dinamik içeriğin oluşturulmasında kullanılan PHP, Python gibi diller için FastCGI kullanılarak önbellekleme sağlanabilir. Aşağıdaki örnek, FastCGI önbellekleme ile dinamik içeriğin nasıl önbelleğe alınabileceğini göstermektedir:

“`nginx
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;

fastcgi_cache my_cache;
fastcgi_cache_valid 200 5m; 200 yanıtları 5 dakika önbellekte tut
fastcgi_cache_use_stale error timeout updating; Hata durumunda eski veriyi kullan
}
“`

Bu yapılandırma, PHP dosyalarına yapılan isteklerin yanıtlarını 5 dakika boyunca önbellekte tutar. Eğer istemcinin isteği sırasında bir hata oluşursa, önceden saklanan veri kullanılmaya devam edilecektir.

Öncelikler ve Performans Artışı

Nginx önbelleklemenin sağladığı performans artışı, sunucu kaynaklarının daha verimli kullanılmasını sağlar. Özellikle geri planda çalışan veri tabanı sorgularının azaltılması, sunucu üzerindeki yükü önemli ölçüde düşürür ve yanıt sürelerini iyileştirir. Önbellekleme mekanizmaları, kullanılmayan kaynakların daha verimli bir şekilde kullanılmasını sağlar.

Ayrıca, Nginx’in sunduğu önbellekleme yöntemleri, farklı yük durumlarına göre yapılandırılabilir. Yüksek trafik anlarında, sunucu kaynakları üzerinde baskı oluşmasını engellemek amacıyla önbellek boyutları artırılabilir. Nginx’in dinamik içerik önbellekleme özelliği, sürekli değişmeyen içeriklerin sunulmasını hızlandırır ve kullanıcı deneyimini iyileştirir.

Önbellekleme ile İçerik Tazeliği

Nginx üzerinde önbellekleme yapılandırılırken, içeriklerin tazeliği de önemli bir faktördür. Kullanıcıların her zaman güncel verilere erişebilmesi için önbellek zamanlaması ve geçerlilik süreleri dikkatlice belirlenmelidir. Statik içeriklerde uzun süreli önbellekleme tercih edilebilirken, dinamik içeriklerde daha kısa süreli veya gerektiğinde güncellenmesi gereken önbellek seçenekleri kullanılmalıdır. Bu, web uygulamalarının performansını artırırken, kullanıcıların güncel verilere ulaşma taleplerini de karşılar.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz

SON İÇERİKLER

İLGİNİZİ ÇEKEBİLİR