Sunucu yanıtı 304 Not Modified
HTTP Durum Kodu 304 (Not Modified)
HTTP durum kodu 304 (Not Modified), istemcinin son isteğinden bu yana istenen kaynağın değişmediğini gösteren bir sunucu yanıtıdır. Bu kod, veri iletimini optimize etmek için kullanılır ve değişmeyen verilerin aktarımını önleyerek ağ trafiğini azaltır.
304 Durum Kodunun Temel Özellikleri
- Tanım ve Amaç: 304 kodu, istemcinin önbelleğinde bulunan verinin güncel olduğunu belirtir. Bu, istemcinin veriyi yeniden indirmesine gerek olmadığı anlamına gelir.
- K caching Mekanizması: 304 durumu, istemcinin son isteğiyle birlikte gönderdiği
If-Modified-Since
veyaIf-None-Match
başlıkları ile birlikte çalışır. Sunucu, bu başlıkları kontrol ederek kaynağın değiştirilip değiştirilmediğini belirler. - Sunucunun 304 Döndürme Şartları: Sunucu, önbellekteki verinin geçerliliğini kontrol eder ve eğer veri değişmemişse 304 durum kodunu döner.
Pratikte 304 Durum Kodu Kullanımı
Örnek: Web Sitesinde Görüntülerin Önbelleğe Alınması
- Tarayıcının Önbelleği: Tarayıcı, ilk istekte gelen veriyi önbelleğine alır ve sonraki isteklerde bu veriyi kullanır.
- Tekrar İstek Davranışı: Tarayıcı, önbellekteki verinin güncel olup olmadığını kontrol etmek için sunucuya istekte bulunur.
Örnek: API Kullanımında 304
- Kaynak İstekleri Optimizasyonu: API'lar, istemciden gelen isteklerde 304 kodunu kullanarak gereksiz veri transferini önleyebilir.
Örnek: If-Modified-Since ve If-None-Match Başlıkları
- Başlıkların Etkileşimi: İstemci, sunucuya önceden indirilmiş verinin son güncellenme tarihini veya etiketini gönderir. Sunucu, bu bilgilere göre yanıt verir.
Farklı Programlama Dilleriyle 304 Hatalarını Düzeltme
PHP
- K caching Başlıklarının Ayarlanması:
header("Cache-Control: max-age=3600");
gibi başlıklar kullanılarak önbellekleme yapılabilir. - 304 Durum Kodunu İşleme Örneği:
if (strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == filemtime($file)) { header("HTTP/1.1 304 Not Modified"); exit(); }
Python (Flask)
- K caching ve 304 İşleme: Flask uygulamalarında
@app.route()
dekoratörü ile 304 durumu dönebilir. - K caching Kontrolü Örneği:
@app.route('/resource') def get_resource(): if request.if_modified_since and request.if_modified_since >= last_modified: return '', 304 return resource_data
Node.js (Express)
- 304 Durumuyla İstekleri İşleme: Express uygulamalarında
res.status(304)
ile yanıt verilebilir. - If-Modified-Since Başlıklarıyla Çalışma Örneği:
app.get('/resource', (req, res) => { if (req.headers['if-modified-since'] === lastModified) { return res.status(304).end(); } res.send(resourceData); });
Sık Karşılaşılan Hatalar ve Çözümleri
Hata | Çözüm |
---|---|
Sunucuda Yanlış K caching Ayarları | K caching ayarlarını kontrol edin ve doğru yapılandırın. |
İstek Başlıklarında Hatalar | Başlıkları doğrulayın ve gerektiğinde güncelleyin. |
304 Durumunu Kontrol Etme ve Hata Ayıklama | Tarayıcı geliştirici araçlarını kullanarak yanıtları inceleyin. |
HTTP 304 durum kodu, istemci-sunucu iletişimini optimize etmek için önemli bir mekanizmadır. İstemcilerin gereksiz veri indirmesini önleyerek ağ verimliliğini artırır. Bu nedenle, web uygulamaları ve API'lar için etkili bir şekilde uygulanması gerekmektedir.