304 Not Modified hatası, tarayıcınız bir web sayfasına erişmeye çalışırken ilgili kaynağın daha önceki sürümünden bu yana herhangi bir değişiklik yapılmadığını belirten bir HTTP yanıt kodudur. Bu durum aslında çoğu zaman bir “hata” değil, HTTP protokolünün normal çalışma şeklidir. Ancak yanlış yapılandırıldığında sitenizin performansını olumsuz etkileyebilir. Bu rehberde, 304 durum kodunu detaylıca inceleyecek, ne zaman sorun oluşturduğunu görecek ve adım adım nasıl çözeceğinizi öğreneceksiniz.
304 Not Modified, bir HTTP durum kodudur. Tarayıcınız bir web sayfasını veya dosyayı ikinci kez istediğinde, sunucu “Bu dosya son ziyaretinden beri değişmedi” der ve yeniden göndermez. Bunun yerine tarayıcınızdaki önbellekteki eski sürümü kullanmanızı söyler. Peki bu neden önemli?
- Bant genişliğinden tasarruf sağlar.
- Sayfa yükleme sürelerini hızlandırır.
- Sunucu kaynaklarını verimli kullanır.
- Kullanıcı deneyimini iyileştirir.
Normal şartlarda 304 kodu siteniz için performans avantajı sağlar. Ancak bazı durumlarda yanlış çalışabilir ve bu da kullanıcıların güncel içeriği görmemesine yol açar. İşte o zaman gerçek bir sorun haline gelir. Evet, 304 kodunun normal bir işleyiş olduğunu söyledik ama bazı senaryolarda bu kod gerçek problemlere işaret edebilir. Gelin hangi durumlarda dikkatli olmanız gerektiğine bakalım.
- Kullanıcılar Güncel İçeriği Göremiyor– Sitenizde önemli bir güncelleme yaptınız ama ziyaretçiler hâlâ eski sürümü görüyor. Bu durumda önbellek yönetiminiz yanlış yapılandırılmış olabilir. Örneğin CSS veya JavaScript dosyalarınızı değiştirdiniz ama tarayıcılar eskisini kullanmaya devam ediyor.
- Yavaş Yükleme Süreleri– Paradoks gibi görünse de, yanlış önbellek ayarları sayfa yüklemelerini yavaşlatabilir. Tarayıcı sürekli sunucuya “değişti mi?” diye sorar ama hiç önbellekten yararlanmaz. Bu da gereksiz isteklere ve gecikmelere yol açar.
- Sürekli Güncellenen İçerik– E-ticaret sitelerinde stok bilgileri, haber sitelerinde canlı veriler gibi dinamik içerikler için 304 kodu sorun yaratabilir. Kullanıcı güncel fiyatı göremeyebilir veya haberin eski versiyonunu okuyabilir.
- CDN Yapılandırma Hataları– CDN kullanıyorsanız, CDN önbelleği ile sunucu önbelleği çakışabilir. Sonuç: kullanıcılar farklı versiyonlar görebilir veya içerik hiç yüklenmeyebilir.
Peki bu sorunların ortak noktası ne? Önbellek kontrolünün doğru yapılandırılmamış olması. Şimdi bu sorunları nasıl tespit edeceğinizi görelim.
Sorunun var olup olmadığını anlamanın ilk adımı, doğru araçları kullanmak ve neye bakacağınızı bilmektir. İşte size üç temel yöntem.
- Tarayıcı Geliştirici Araçları– En kolay ve hızlı yöntem, tarayıcınızın yerleşik geliştirici araçlarını kullanmaktır. Chrome’da F12, Firefox’ta da F12 tuşuna basarak başlayabilirsiniz.
- Geliştirici araçlarında “Network” (Ağ) sekmesine gidin. Burası tüm HTTP isteklerini gösterir.
- Ctrl+R veya Cmd+R ile sayfayı yenileyin ve istekleri izleyin. Her isteğin yanında bir durum kodu görünecek.
- Status sütununda 304 kodlarını arayın. Bunların hangi dosyalar için geldiğine dikkat edin: CSS, JS, resimler vs.
- 304 dönen bir isteğe tıklayıp “Headers” (Başlıklar) kısmını açın. Cache-Control, ETag, Last-Modified gibi değerleri kontrol edin.
- Online Test Araçları– Bazı harika online araçlar, sitenizin önbellek ayarlarını analiz edebilir:
- GTmetrix: Performans analizi ve önbellek önerileri
- WebPageTest: Detaylı HTTP başlık incelemesi
- Pingdom: Hız testi ve önbellek kontrolü
- Google PageSpeed Insights: Önbellek politikası tavsiyeleri.
- Sunucu Loglarını İnceleyin– Daha teknik bir yaklaşım için, sunucu loglarınıza göz atın. Apache veya Nginx loglarında 304 kodlarının ne sıklıkta döndüğünü görebilirsiniz. Eğer bir dosya için hiç 200 kodu dönmüyor hep 304 geliyorsa, bu bir işarettir: güncellemeler kullanıcılara ulaşmıyor olabilir.
304 Not Modified Hatası Çözümü
Artık sorunu tespit ettiniz, şimdi çözüm zamanı. Aşağıdaki adımları sırayla uygulayarak 304 ile ilgili problemleri çözebilirsiniz. Her bir çözüm farklı bir senaryoya hitap ediyor, bu yüzden durumunuza en uygun olanı seçin.
1. Tarayıcı Önbelleğini Temizleyin
304 hatasının en yaygın sebeplerinden biri tarayıcı önbelleğinde biriken bozulmuş veya güncellenmemiş içeriklerdir. Tarayıcınızın önbelleğini temizlemek, depolanan tüm geçici dosyaları siler ve tarayıcıyı sunucudan tekrar veri almaya zorlar.
- Google Chrome tarayıcı önbelleğini temizlemek için;
- Google Chrome’u açın ve sağ üst köşedeki üç noktaya ve ardından “Ayarlar”a tıklayın.
- “Gizlilik ve güvenlik”e gidin ve “Tarama verilerini temizle”ye tıklayın.
- Temizlemek istediğiniz zaman aralığını ve öğeleri (Önbellek ve Çerezler) seçin ve ardından “Verileri temizle”ye tıklayın.
- Mozilla Firefox için;
- Menü → Ayarlar → Gizlilik ve Güvenlik bölümüne girin.
- “Çerezleri ve site verilerini temizle” seçeneğini tıklayın.
- “Önbelleğe alınmış web içeriği” kutucuğunu işaretleyip temizleyin.
- Microsoft Edge için;
- Menü → Ayarlar → Gizlilik, arama ve hizmetler → Tarama verilerini temizle.
- Önbelleğe alınan resim ve dosyaları seçip silin.
2. DNS Önbelleğini Temizleyin
DNS önbelleği, en son alan adı çözümlemelerini saklayan geçici bir veritabanıdır. DNS önbelleği bozuksa veya güncel değilse, 304 Not Modified hatasına neden olabilir. Bunu çözmek için DNS önbelleğini sıfırlamanız gerekir.
- Windows Kullanıcıları için:
- “Windows + R” tuşlarına basın ve ilgili alana “CMD” yazın.
- Komut alanına
ipconfig /flushdnsyazın ve enter tuşuna basın. - Tarayıcınızı yeniden başlatın ve 304 hatasının devam edip etmediğini kontrol edin.
📌 Tüm detayları ve farklı işletim sistemlerinde DNS önbellek temizleme işleminin nasıl yapıldığını görmek için şu kılavuzumuzdan faydalanabilirsiniz: DNS Önbelleği Nasıl Temizlenir (Windows, Mac, Linux vb.)
3. CDN Önbelleğini Temizleyin
CDN kullanıyorsanız, dosyalarınız dünyanın dört bir yanındaki sunucularda önbellekte tutulur. Güncelleme yaptığınızda, CDN’in de haberdar olması gerekir.
- CDN Kontrol Paneline Girin- Cloudflare, AWS CloudFront, Akamai vs.
- “Cache Purge” veya “Invalidation” sekmesini arayın.
- Tüm siteyi veya belirli dosyaları temizleyin.
- İşlem birkaç dakika sürebilir, sabırlı olun.
4. Tarayıcı Uzantılarını Devre Dışı Bırakın
Bazen tarayıcı uzantıları otomatik olarak güncellenir. Bu, bir web sitesinin veri akışına müdahale ederek sunucu yanıt hatalarına neden olabilir. Belirli bir web sitesinde HTTP 304 Not Modified hatası ile karşılaşırsanız tüm uzantılarınızı devre dışı bırakın ve sorunun devam edip etmediğini kontrol edin.
- Google Chrome tarayıcı uzantılarını geçici olarak şu şekilde devre dışı bırakabilirsiniz:
- Tarayıcınızı açın ve sağ üst köşedeki üç noktalı menü simgesine tıklayın.
- “Diğer Araçlar”a ve ardından “Uzantılar”a tıklayın.
- Bir uzantıyı devre dışı bırakmak için uzantı adının sağ tarafındaki seçim düğmesine tıklayın.
- Ardından siteyi gizli sekmede açarak 304 hatasının devam edip etmediğini kontrol edin.
- Alternatif olarak;
- Chrome:
chrome://extensions/adresine gidin, uzantıların yanındaki düğmeleri kapatın. - Firefox:
about:addons→ Eklentiler → Devre dışı bırak yolunu izleyin.
- Chrome:
5. Sunucu Yapılandırma Dosyalarını Kontrol Edin
Hatalı veya yanlış yönlendirme talimatları 304 Not Modified hatası görmenizin nedeni olabilir. Sunucunun doğru şekilde yapılandırıldığından ve kullanıcıyı doğru URL’ye yönlendirdiğinden emin olun. 304 hatasının göründüğü web sitesinin sahibiyseniz, sunucu yapılandırma dosyalarınızı kontrol etmenizi öneririz. Web siteniz Apache üzerinde çalışıyorsa sunucu yapılandırma dosyalarınız “.htaccess” olarak adlandırılır. Bunu web sitenizin kök dizininde, genellikle public_html klasörünün içinde bulabilirsiniz. .htaccess dosyaları, yönlendirmeler de dahil olmak üzere birçok sunucu isteğini işler. Bu dosyada bir hata olduğunda, erişim sorunları ile karşılaşabilirsiniz.
- Çözüm için .htaccess dosyanızı silip yeniden yüklemek faydalı olabilir:
- cPanel’e giriş yapın ve Dosya Yöneticisi’ne gidin.
- public.html klasörüne tıklayın.
- Buradan .htaccess dosyanızı bulun ve sağ tıkla ‘İndir‘e tıklayıp bilgisayarınıza bir yedek indirin.
- Şimdi .htaccess dosyanızı silip web sitenizi kontrol edin.
- Dosyayı sildikten sonra wp admin panele giriş yapabiliyorsanız Ayarlar → Kalıcı Bağlantılar‘a gidin ve herhangi bir değişiklik yapmadan sadece Kaydet‘e tıklayın. Bu işlem, WordPress’i yeni ve hatasız bir .htaccess dosyası oluşturmaya zorlar.
6. Cache-Control Başlıklarını Düzenleyin
Sunucu tarafında asıl kontrol, HTTP başlıkları ile yapılır. Cache-Control başlığı, tarayıcıya “bu dosyayı ne kadar süre saklayabilirsin” diye talimat verir.
# Apache .htaccess dosyasına ekleyin
Header set Cache-Control "no-cache, must-revalidate"
Header set Cache-Control "public, max-age=604800"
Header set Cache-Control "public, max-age=2592000"
Bu örnekte, HTML dosyaları önbelleğe alınmıyor (dinamik içerik için ideal), CSS/JS dosyaları 7 gün, resimler ise 30 gün önbellekte kalıyor. Statik dosyalar için uzun süreler, dinamik içerik için kısa süreler kullanmak en iyi uygulamadır.
7. ETag ve Last-Modified Kullanımı
ETag (Entity Tag), bir dosyanın benzersiz sürüm kimliğidir. Sunucu, dosya değiştiğinde ETag’i de değiştirir. Tarayıcı eski ETag’i gönderdiğinde, sunucu “bu ETag eski” diyerek 200 kodu ile yeni içeriği gönderir.
- ETag’i Etkinleştirme (Apache):
FileETag MTime Size- Bu ayar, dosyanın değiştirilme zamanı (MTime) ve boyutuna (Size) göre ETag üretir.
- ETag’i Etkinleştirme (Nginx):
etag on;- Nginx’te varsayılan olarak açık olsa da, bazen devre dışı bırakılmış olabilir. Kontrol edin.
- Last-Modified başlığı ise dosyanın en son ne zaman değiştiğini belirtir. Tarayıcı, “If-Modified-Since” başlığı ile son bildiği tarihi gönderir. Dosya o tarihten sonra değişmediyse 304, değiştiyse 200 kodu döner.
8. WordPress Kullanıcıları İçin Özel Çözümler
WordPress, önbellek yönetimi konusunda bazen kafa karıştırıcı olabilir, çünkü önbellek birden fazla katmanda gerçekleşir: tarayıcı, eklentiler, sunucu ve CDN. Hepsini uyumlu hale getirmek gerekir.
- Hızlı Kontrol Listesi:
- Önbellek eklentisi ayarlarını gözden geçirin
- Tema güncellemesi sonrası önbelleği temizleyin
- CDN kullanıyorsanız, WordPress eklentisi ile entegre edin
- Object cache (Redis, Memcached) kullanıyorsanız, onu da temizleyin
- wp-config.php dosyasında önbellek sabitlerini kontrol edin
SEO ve 304 Durum Kodu İlişkisi
Merak ediyorsunuzdur: 304 kodu SEO’yu etkiler mi? Google bunu hata olarak görür mü? İyi haber: hayır, 304 kodu SEO açısından zararlı değildir. Hatta doğru kullanıldığında faydalıdır.
Google’ın botları, tıpkı tarayıcılar gibi önbellekleme yapar. Bir sayfayı taradıktan sonra, tekrar geldiğinde “If-Modified-Since” başlığı gönderir. Sayfa değişmediyse, sunucu 304 döner ve Google “tamam, bu sayfayı zaten indeksledim, değişiklik yok” der. Bu durum aslında crawl bütçenizi korur. Google, her sitede sınırlı sayıda sayfa tarayabilir. Değişmeyen sayfalara 304 dönerek, Google’ın zamanını yeni veya güncellenmiş içeriğe ayırmasını sağlarsınız.
Google’ın Core Web Vitals metrikleri (LCP, FID, CLS) kullanıcı deneyimini ölçer. İyi yapılandırılmış önbellek, özellikle LCP değerini iyileştirir. Statik kaynaklar önbellekten hızlıca yüklendiğinde, sayfa daha çabuk render olur. Ancak dikkat: yanlış yapılandırılmış önbellek, kullanıcıların eski CSS görmesine ve CLS (Cumulative Layout Shift) artmasına neden olabilir. Yani doğru önbellek SEO için artı, yanlış önbellek eksidir.
