Status Kodu 304 Not Modified Nedir? Bant Genişliği Tasarrufu

INEZA Felin-Michel

INEZA Felin-Michel

23 September 2025

Status Kodu 304 Not Modified Nedir? Bant Genişliği Tasarrufu

Bugün üçüncü kez favori haber sitenizde geziniyorsunuz. Yenile'ye tıklıyorsunuz ve sayfa neredeyse anında yükleniyor. Arka planda, tarayıcınız sitenin logosunu, CSS stil sayfasını veya JavaScript dosyalarını aslında tekrar indirmedi. Zaten onlara sahipti. Sadece değişip değişmediklerini kontrol etmek için sunucuyla iletişime geçti ve sunucu basit, tek satırlık bir yanıt verdi: 304 Not Modified.

Bu minik, verimli durum kodu, web performansının isimsiz kahramanlarından biridir. Modern web'in hızlı ve duyarlı hissetmesinin nedenidir. Önbelleğe almanın temelini oluşturur ve her gün milyarlarca gigabayt bant genişliğinden tasarruf sağlar. İlk bakışta, bir yönlendirme veya hata kodu kadar heyecan verici görünmeyebilir, ancak inanın bana, web sitelerini ve API'leri daha hızlı ve daha verimli hale getirmek için en güçlü araçlardan biridir.

304 bir hata değildir; başarılı, verimli bir onaydır. Sunucunun "Bu dosyanın en son sürümü zaten yerel olarak kaydedilmiş. Tekrar göndermeme gerek yok. Sende olanı kullan." deme şeklidir.

Bu blog yazısında, 304 Not Modified'ın ne anlama geldiğini, nasıl çalıştığını, neden önemli olduğunu ve geliştiricilerin daha hızlı, daha duyarlı web siteleri ve API'ler oluşturmak için bunu nasıl kullanabileceğini derinlemesine inceleyeceğiz. Eğer bir geliştiriciyseniz, 304'ün nasıl çalıştığını anlamak, hızlı, verimli ve ölçeklenebilir uygulamalar oluşturmak için çok önemlidir.

Başlamadan önce, web sunucularınızın veya API'lerinizin 304 Not Modified gibi yanıtları nasıl ele aldığını test etmek ve keşfetmek isterseniz, Apidog'u ücretsiz olarak indirdiğinizden emin olun. Apidog, HTTP yanıtlarını keşfetmenize, yanıtları doğrulamanıza ve arka ucunuzu bir profesyonel gibi optimize etmenize yardımcı olan güçlü bir API test ve dokümantasyon aracıdır. Hepsinden iyisi, indirmesi ücretsizdir. API'lerinizi bugün optimize etmeye başlayın.

button

Şimdi, HTTP durum kodu 304 Not Modified'a derinlemesine dalalım ve neden bu kadar önemli olduğunu görelim.

Sorun: Veri Aktarımında İsraf

Web'in ilk günlerinde, her istek aynı şekilde çalışıyordu:

  1. Tarayıcı: "Bana /logo.png ver."
  2. Sunucu: "İşte burada!" (200 OK + tam resim verisi)
  3. Tarayıcı (2 saniye sonra): "Bana tekrar /logo.png ver."
  4. Sunucu: "İşte tekrar burada!" (200 OK + tamamen aynı resim verisi)

Bu inanılmaz derecede israftı. Aynı logo, stil sayfası ve betikler, tek bir kullanıcı için günde düzinelerce kez ağ üzerinden aktarılıyor, bant genişliğini tüketiyor ve sayfa yüklemelerini yavaşlatıyordu.

Bu verimsizliğin çözümü iki aşamalı bir süreçtir: önbelleğe alma ve koşullu istekler, başrolde 304 durum kodu vardır.

HTTP 304 Not Modified Gerçekten Ne Anlama Geliyor?

304 Not Modified durum kodu, sunucunun istenen kaynağı aktarmasına gerek olmadığını belirten, yönlendirme benzeri bir yanıttır çünkü istemci zaten yerel önbelleğinde güncel bir sürüme sahiptir.

Boş bir gövdeye sahip bir başarı mesajıdır. Sunucu aslında "İsteğiniz başarılı oldu. İstediğiniz kaynak değişmedi. Size gönderecek yeni bir şeyim yok." demektedir.

Başka bir deyişle, aynı veriyi tekrar tekrar göndererek bant genişliğini israf etmek yerine, sunucu basitçe hafif bir onay ile yanıt verir.

Tipik bir 304 yanıtı şaşırtıcı derecede minimalisttir:

HTTP/1.1 304 Not ModifiedCache-Control: public, max-age=300ETag: "a3c8d7e1f5g2"Date: Sat, 28 Oct 2023 10:00:00 GMT

Neyin eksik olduğuna dikkat ettiniz mi? Yanıt gövdesi. Resim verisi, CSS, JSON yok. 304'ü bu kadar verimli yapan da budur. Yanıtın tamamı sadece birkaç yüz baytlık başlıklardan oluşur ve gövdede olabilecek megabaytlarca veriden tasarruf sağlar.

304 Neden Var? (Kısa Bir Tarihçe)

Web'in ilk günlerinde, bir web sayfası her yüklendiğinde, tarayıcı her şeyi (HTML, CSS, resimler, betikler) sıfırdan getiriyordu. Bu yavaştı ve israftı.

Bunu çözmek için, HTTP, Last-Modified ve ETag gibi önbelleğe alma mekanizmalarını tanıttı. 304 durum kodu şunlar için tasarlandı:

HTTP/1.1'de bir standart haline geldi ve günümüzde web performansının temel taşı olmaya devam ediyor.

304 Not Modified Neden Önemli?

Şöyle düşünün: Bir kullanıcı bir web sitesini her ziyaret ettiğinde veya bir API kaynağı istediğinde, tüm içeriği her seferinde indirmek, özellikle mobil kullanıcılar veya yavaş bağlantılar için yavaş ve israflı olabilir. 304 Not Modified'ı kullanarak:

304 olmasaydı, önbelleğe alma etkisiz olur ve web siteleri daha yavaş çalışırdı.

İki Adımlı Dans: Önbelleğe Alma ve 304 Nasıl Birlikte Çalışır?

304 tek başına çalışmaz. İstemci ve sunucu arasındaki zarif bir dansın parçasıdır.

Adım 1: İlk İstek ("Tohum" İstek)

Bir tarayıcı bir kaynağı ilk kez istediğinde, sunucu verilerle birlikte iki önemli bilgiyle yanıt verir (200 OK):

ETag (Varlık Etiketi): Kaynağın mevcut sürümü için bir parmak izi gibi benzersiz bir tanımlayıcı. Bu genellikle dosyanın içeriğinin bir hash'idir. Dosya değişirse, ETag de değişir.

ETag: "a3c8d7e1f5g2"

Last-Modified: Kaynağın en son değiştirildiği tarih ve saat.

Last-Modified: Sat, 28 Oct 2023 09:00:00 GMT

Tarayıcı kaynağı ve bu iki doğrulayıcıyı önbelleğinde saklar.

Adım 2: Sonraki İstek ("Koşullu" İstek)

Tarayıcı aynı kaynağa tekrar ihtiyaç duyduğunda (örneğin, kullanıcı aynı sitede başka bir sayfayı ziyaret ettiğinde), körü körüne istemez. Kaydettiği doğrulayıcıları dahil ederek koşullu bir istek yapar.

Bunu iki şekilde yapabilir:

If-None-Match Başlığını Kullanarak (ETag ile):

GET /logo.png HTTP/1.1Host: www.example.comIf-None-Match: "a3c8d7e1f5g2"

Bu istek şöyle der: "Lütfen bana /logo.png'yi yalnızca mevcut ETag'i bende olanla (a3c8d7e1f5g2) farklıysa gönder."

If-Modified-Since Başlığını Kullanarak (tarih ile):

GET /logo.png HTTP/1.1Host: www.example.comIf-Modified-Since: Sat, 28 Oct 2023 09:00:00 GMT

Bu istek şöyle der: "Lütfen bana /logo.png'yi yalnızca 28 Ekim'den beri değiştirilmişse gönder."

Adım 3: Sunucunun Kararı

Sunucu bu koşullu isteği alır ve kaynağı kontrol eder.

Bu zarif el sıkışma, verilerin yalnızca kesinlikle gerektiğinde aktarılmasını sağlar.

304 Yanıtlarında HTTP Başlıklarının Rolü

304'ün büyüsü başlıklarda yatar. İki ana oyuncu şunlardır:

İstemci If-Modified-Since veya If-None-Match gönderdiğinde, sunucu şunları kontrol eder:

ETag ve Last-Modified Nedir?

İstemciler, içeriğin değişip değişmediğini kontrol etmek için tekrarlanan istekler sırasında bu değerleri koşullu başlıklar olarak gönderir.

304 Yanıtları İçin Yaygın Kullanım Durumları

304 İş Akışı Örneği

İşte bir tarayıcı ve sunucu arasındaki basitleştirilmiş bir örnek:

İlk İstek

textGET /styles.css HTTP/1.1 Host: example.com

İlk Yanıt

`textHTTP/1.1 200 OK ETag: "abc123" Last-Modified: Tue, 15 Sep 2025 11:00:00 GMT Content-Type: text/css
/* CSS stilleri burada */`

Sonraki İstek

textGET /styles.css HTTP/1.1 Host: example.com If-None-Match: "abc123" If-Modified-Since: Tue, 15 Sep 2025 11:00:00 GMT

Sunucu Yanıtı (Değişiklik Yok)

textHTTP/1.1 304 Not Modified

Sunucu içeriğin değişmediğini söylediği için tarayıcı önbelleğe alınmış kopyasını kullanır.

Neden Her Zaman Önbelleğe Alınmış İçerik Sunmayalım?

İyi bir soru!

İstemciler her zaman doğrulama yapmadan önbelleğe alınmış içeriği kullansaydı, güncellemeleri veya doğruluk için gerekli değişiklikleri kaçırabilirlerdi. 304 mekanizması, istemcilerin gerektiğinde güncellenmiş kaynakları almasını sağlarken, hiçbir şey değişmediyse israflı aktarımları önler.

SEO ve 304 Not Modified

SEO açısından, 304 yanıtları arama motorlarının sitenizi daha verimli taramasına yardımcı olur. Bant genişliği kullanımını azaltır ve değişmemiş sayfalar için "içerik yok" yanıtları sunarak tarama bütçelerini iyileştirir, böylece arama motorlarının yeni içeriğe odaklanmasını sağlar.

304 Neden Bu Kadar Önemli? Faydaları

  1. Şimşek Hızında Yükleme Süreleri: Tarayıcı, her bir varlığı tekrar indirmeyi beklemeden bir sayfayı gösterebilir. Hızlı bir 304 kontrolünden hemen sonra önbelleğe alınmış sürümlerini kullanabilir.
  2. Büyük Bant Genişliği Tasarrufu: Bu en büyük faydadır. Büyük bir gövdeye sahip 200 yerine 304 yanıtı sunmak, hem kullanıcı hem de sunucu için muazzam miktarda ağ trafiğinden tasarruf sağlar.
  3. Azaltılmış Sunucu Yükü: Sunucular, aynı dosyayı diskten saniyede binlerce kez okuyup göndermek zorunda kalmayarak CPU döngülerinden ve G/Ç işlemlerinden tasarruf eder.
  4. Daha İyi Kullanıcı Deneyimi: Daha hızlı web siteleri, daha mutlu kullanıcılar demektir.
  5. Maliyet Azaltma: Bant genişliği için ödeme yapan şirketler (bulut barındırma faturaları gibi) için, veri aktarımını azaltmak doğrudan para tasarrufu sağlar.

304 Not Modified ile İlgili Yaygın Sorunlar

Apidog ile Koşullu İstekleri Test Etme

Önbelleğe alma davranışını test etmek zor olabilir. Belirli başlıklarla istek göndermeniz ve sunucunun yanıtını yorumlamanız gerekir. Apidog bunun için mükemmel bir araçtır.

Apidog ile şunları yapabilirsiniz:

  1. Doğrulayıcıları Yakalayın: Bir kaynağa ilk isteği gönderin ve Apidog'un arayüzünü kullanarak 200 yanıtından ETag ve Last-Modified başlıklarını kolayca görüntüleyin ve kopyalayın.
  2. Koşullu İstekler Oluşturun: Aynı URL'ye yeni bir istek oluşturun ve yakaladığınız değerlerle If-None-Match veya If-Modified-Since başlıklarını kolayca ekleyin.
  3. 304 Yanıtını Doğrulayın: Koşullu isteği gönderin ve sunucunun gövdesiz bir 304 Not Modified durumu döndürdüğünü onaylayın.
  4. Önbellek Geçersiz Kılmayı Test Edin: Kaynağı sunucuda değiştirin (erişiminiz varsa) ve koşullu isteği tekrarlayın. Şimdi yeni verilerle birlikte bir 200 OK görmelisiniz, bu da önbelleğe alma mantığınızın çalıştığını kanıtlar.
  5. Testleri Otomatikleştirin: Bu süreci otomatikleştiren Apidog'da test paketleri oluşturun, API'nizin önbelleğe alma başlıklarının her zaman doğru şekilde yapılandırıldığından emin olun.
button

Apidog ile gerçek dünya uç durumlarını beklemeden önbelleğe almayı ince ayar yapabilirsiniz. Bu yeteneklerden yararlanmak için Apidog'u ücretsiz indirin.

Geliştiriciler İçin En İyi Uygulamalar

Sunucu tarafı bir uygulama geliştiriyorsanız, 304'ü kullanabilirsiniz:

  1. Her Zaman Doğrulayıcı Gönderin: Önbelleğe alınabilir kaynaklar (resimler, CSS, JS, statik API verileri) için, 200 yanıtlarınızda her zaman bir ETag veya Last-Modified başlığı ekleyin.
  2. Koşullu Mantık Uygulayın: Sunucu kodunuzda, If-None-Match ve If-Modified-Since başlıklarını kontrol edin. Eğer mevcut kaynakla eşleşiyorlarsa, 304 ile yanıt verin. Eşleşmiyorlarsa, 200 ve yeni verilerle yanıt verin.
  3. Cache-Control Kullanın: Cache-Control başlığı (örneğin, max-age=3600), tarayıcıya bir kaynağı koşullu bir istek yapmaya bile gerek kalmadan ne kadar süre taze kabul edebileceğini söyler. Bu, 304'ten bile daha verimlidir.

304 Not Modified ve RESTful API'ler

REST API'lerinde, 304, istemcilerin kaynak temsillerini önbelleğe almasına izin vererek verimliliği büyük ölçüde artırır. Doğru önbellek yönetimi, sunucu yükünü azaltır ve istemci senkronizasyonunu hızlandırır.

Sık güncellenen kaynakları sunan API'lerde, 304 yanıtlı koşullu istekler, ölçeklenebilir performans için esastır.

Web Tarayıcılarında 304 Not Modified

Modern tarayıcılar 304'e büyük ölçüde güvenir:

304 ve 200: Fark Nedir?

Her iki kod da "başarı" anlamına gelir, ancak fark yükte yatar:

304'ü şöyle düşünebilirsiniz:

"Merak etme, yeni bir şey yok. Zaten sahip olduklarını kullanmaya devam et."

304 ve 200 OK: Ne Zaman Hangisini Seçmeli?

Doğru önbellek kontrolü, istemcilerin ne zaman güncelleme isteyeceklerini ve ne zaman önbelleğe alınmış verileri kullanacaklarını bilmelerini sağlar.

Sonuç: Web'in Sessiz İş Gücü

HTTP 304 Not Modified durum kodu, verimli tasarımın bir başyapıtıdır. Modern web'i ölçeklenebilir ve hızlı kılan sessiz, sahne arkası bir iş gücüdür. İstemcilerin ve sunucuların gereksiz işleri önlemek için birlikte çalıştığı işbirliğine dayalı bir protokolün gücünü gösterir.

304 Not Modified durum kodu, 404 veya 500 gibi manşetlere çıkmayabilir, ancak performans, önbelleğe alma ve verimlilik için esastır. Bant genişliği kullanımını azaltır, sayfa yüklemelerini hızlandırır ve API'lerin sorunsuz çalışmasını sağlar.

Kullanıcılar onu asla görmese de, daha hızlı yüklenen sayfalar ve daha akıcı gezinme sayesinde faydalarını her gün deneyimlerler. Geliştiriciler için, 304 yanıtları için desteği anlamak ve doğru bir şekilde uygulamak, herhangi bir web özelliğinin optimizasyonunda önemli bir beceridir.

Bu yüzden bir dahaki sefere bir sayfa göz açıp kapayıncaya kadar yüklendiğinde, bunu mümkün kılan minik 304 yanıtını hatırlayın. Eğer bir geliştiriciyseniz, 304'te ustalaşmak, daha hızlı, daha akıllı uygulamalar oluşturmak demektir. 304 yanıtlarını nasıl uygulayacağınızı ve test edeceğinizi anlamak, verimli, performanslı web uygulamaları ve API'ler oluşturma yeteneğinizi artırır.

Ve unutmayın, önbelleğe alma ve yönlendirme davranışını test etmek, 304 Not Modified gibi HTTP durum kodlarında ustalaşmanıza yardımcı olmak için tasarlanmış ücretsiz, güçlü bir araç olan Apidog ile her zamankinden daha kolaydır, varsayımlarınıza güvenmeyin, önbelleğe almayı Apidog ile simüle edin ve doğrulayın.

button

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin