İçerikler

    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 - Not Modified

    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 veya If-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.