Keys_zone = myCache: 8m ne anlama geliyor?
Gibi belgeler söyledi , nginx tutacak verinin depolandığı hakkında tüm aktif anahtarları ve bilgiler olan bir paylaşılan bellek bölgesi, içinde name
ve size
keys_zone parametresi tarafından yapılandırılır. Bir bütünlük meselesi olarak, parça başına parçalanmaya izin verir
/var/cache/nginx
gerçek önbelleğin depolandığı yerdir. Klasörün içinde, önbellek dosyası ikili dosyadaydı ancak içindeki html etiketini kolayca tespit edebilirsiniz.
levels=1:2
Düzeyler parametresi önbellekteki alt dizin düzeylerinin sayısını ayarlar.
keys_zone=myCache:8m
en fazla 8 MB boyutunda myCache adlı paylaşılan bellek bölgesini tanımlıyordu. Önbelleğin tüm aktif anahtarlarını ve meta verilerini tutar . Bu nedenle, nginx bir sayfanın önbelleğe alındığını kontrol ettiğinde, önce paylaşılan bellek bölgesine danışır, ardından önbellek /var/cache/nginx
varsa gerçek önbellek konumunu arar .
max_size
Maksimum önbellek büyüklüğündeydi, örneğin dosya büyüklüğü /var/cache/nginx
.
inactive=1h
maksimum etkin olmayan zaman önbelleğinin saklanabileceğini belirtin. inactive
Parametre tarafından belirtilen sürede erişilmeyen önbelleğe alınmış veriler , tazeliğinden bağımsız olarak önbellekten kaldırılır.
Önbellek doğrulama ve silme nasıl çalışır?
Nginx posta listelerinden alınmış
Yönerge proxy_cache_valid geçerli sayılacak (ve arka uçta istekler olmaksızın iade edilecektir) ne kadar tepki belirtir. Bu süreden sonra yanıt "bayat" olarak değerlendirilir ve iade edilmez veya proxy_cache_use_stale ayarına bağlı olarak değişir .
Proxy_cache_path etkisiz argümanı , son kullanımdan sonra yanıtın önbellekte ne kadar süre saklanacağını belirtir. Eskiden gelen yanıtların bile, talepler halinde son zamanlarda kullanılmaya başlanacağını unutmayın.
Anladığım kadarıyla burada sözde kod nginx'in nasıl çalıştığını
İstek geldiğinde
if cache.exist AND (now() - cache.first_retrieved) < proxy_cache_valid:
use it
else:
retrieve from backend
replace the old ones
Diğer süreçte, önbellek yöneticisi bu mantığı gerçekleştirir
if (now() - cache.last_used) > inactive:
del cache
if all-cache.size > max-size:
del *the most inactive cache* until size < max-size
Proxy_cache_valid (12h), proxy_cache_path'ta belirtilen etkin olmayan değerden (1h) daha yüksekse ne olur?
İstek ve belirli önbelleğe eriştiği sürece, bu önbellek nesnesi, önbellek konulduktan 12 saat sonra da geçerli olacaktır. Bundan sonra, önbellek geçersiz sayıldı, bu nedenle nginx arka uçtan getirecek ve geçerli zamanlayıcıyı sıfırlayacaktır. Ancak eğer nesne aktif değilse (erişilmezse) bir saatten fazla - 12 saat geçerli önbellek döneminde - nginx parametre nedeniyle onu silecektirinactive
.
365d
ve geçerliyse,1d
nginx, hiç kimse bu isteği yapmasa bile, bir yıl boyunca her gün önbellekteki istekleri alır?