HTTP 304 Not Modified
Önbellek doğrulayıcı: son ziyaretinizden bu yana hiçbir şey değişmedi, elinizdeki kopyayı kullanmaya devam edin.
HTTP 304 ne anlama gelir
"HTTP 304 Not Modified, koşullu bir isteğe verilen yanıttır. İstemci "bu tarihten bir kopyam var" (If-Modified-Since) veya "bu parmak iziyle" (If-None-Match) der, sunucu da kopyanın hâlâ güncel olduğunu gövdesiz bir 304 ile yanıtlayarak onaylar.
Bu mekanizma — önbellek yeniden doğrulaması — tekrarlanan sayfa yüklemelerini hızlı yapan şeydir: tarayıcı yalnızca değişeni yeniden indirir ve geri kalan her şeye tek küçük bir gidiş-dönüş mal olur.
304 yanıtlarının yaygın nedenleri
- Tarayıcı, önbelleğe alınmış bir sayfayı, betiği veya görseli yeniden doğruladı ve bunun değişmediği ortaya çıktı.
- Bir CDN kenar sunucusu, saklanan nesnesini kaynağa (origin) karşı yeniden doğruladı.
- Bir API istemcisi, bir kaynağı ucuz bir şekilde yoklamak için ETag'leri kullandı.
Geliştiriciler için iyi uygulamalar
- İstemcilerin hiç yeniden doğrulayabilmesi için kararlı ETag veya Last-Modified başlıkları sunun.
- 304 ile bir yanıt gövdesi eklemeyin — istemcide bu zaten açıkça mevcut.
- Her yanıtta değişen ETag'lere dikkat edin (örneğin düğüm başına hash'e sahip yük dengelemeli sunuculardan gelenler): bunlar yeniden doğrulamayı sessizce devre dışı bırakır.
Örnek yanıt
GET /styles.css HTTP/1.1 If-None-Match: "abc123" HTTP/1.1 304 Not Modified ETag: "abc123" Cache-Control: max-age=3600
SEO etkisi
304 yanıtları SEO performansı için iyidir: Googlebot koşullu istekleri yoğun şekilde kullanır ve doğru yeniden doğrulama, aynı bütçeyle sitenizin daha fazlasını taramasını sağlar. Bozuk doğrulayıcılar her taramada tam yeniden indirmeye zorlar.
SSS
Bir 304 yanıtı bir hata mıdır?
Hayır — bu, önbelleğe alınmış kopyanızın hâlâ geçerli olduğu anlamına gelen bir başarı sinyalidir. Tarayıcılar bunu şeffaf bir şekilde ele alır.
Bir 304 yanıtını ne tetikler?
Değerleri hâlâ mevcut kaynakla eşleşen If-None-Match veya If-Modified-Since başlıkları taşıyan bir istek.
DevTools'ta neden 200 yerine 304 görüyorum?
Tarayıcının önbelleğe alınmış bir kopyası vardı ve onu yeniden doğruladı. Durum, sunucunun dosyayı yeniden göndermek yerine önbelleği onayladığını gösterir.