Son sorunuz için neden? Bildiklerimle açıklamaya çalışacağım
Layman'ın terimleriyle bu üç durum kodunun kısa bir açıklaması.
- 200 - başarılı (tarayıcı istekleri ve sunucudan dosya alma)
Sunucuda önbellekleme etkinse
- 200 (bellek önbelleğinden) - tarayıcıda dosya bulundu, bu yüzden tarayıcı sunucudan istek almıyor
- 304 - tarayıcı bir dosya istedi, ancak sunucu tarafından reddedildi
Bazı dosyalar için tarayıcı sunucudan istemeye karar verirken, bazıları için saklanan (önbelleğe alınmış) dosyalardan okumaya karar verir. Bu neden ? Her dosyanın bir son kullanma tarihi vardır, bu nedenle
Bir dosyanın süresi dolmazsa, tarayıcı önbellekten (200 önbellek) kullanılır.
Dosyanın süresi dolarsa, tarayıcı sunucudan bir dosya ister. Her iki yerde de sunucu kontrol dosyası (tarayıcı ve sunucu). Aynı dosya bulunursa, sunucu isteği reddeder. Protokol başına tarayıcı mevcut dosyayı kullanır.
bu nginx yapılandırmasına bakın
location / {
add_header Cache-Control must-revalidate;
expires 60;
etag on;
...
}
Burada süre sonu 60 saniyeye ayarlanmıştır, bu nedenle tüm statik dosyalar 60 saniye boyunca önbelleğe alınır. Yani 60 saniye içinde tekrar bir dosya talep ederseniz tarayıcı bellekten (200 bellek) okuyacaktır. 60 saniye sonra u talep ederseniz tarayıcı sunucu (304) isteyecektir.
Ben dosya 60 saniye sonra değişmedi varsayalım, bu durumda 200 alacaksınız (yani, güncellenmiş dosya sunucudan getirilir).
Dolayısıyla, sunucular farklı zaman aşımı ve önbellek üstbilgileri (ilkeleri) ile yapılandırılmışsa, durum farklı olabilir.
CDn kullanmanız durumunda, cdn'nin temel amacı yüksek kullanılabilirlik ve hızlı teslimattır. Bu nedenle birden çok sunucu kullanırlar. Dosyalar aynı dizinde gibi görünse de, bu sunucular farklı yapılandırmalara sahipse, cdn u içeriği sağlamak için birden fazla sunucu kullanabilir. Sonra bu durum değişebilir. Umarım yardımcı olur.