Http ile ilgili ilgiç bir durum buldum. Basitçe anlatmak gerekirse istemci GET /sayfanin/bulundugu/dizin şeklinde bir istek yaptığında normalde web sunucunun index olarak tanimlanmış (çoğunlukla index.html oluyor) dosyayı istemciye göndermesi gerekir. En azindan ben öyle biliyordum. Ama olay tam olarak böyle gerçekleşmiyormuş.

İlk gönderdiğimiz HTTP isteğine karşılık sunucu bize aynen şu header’ı (HTTP veri başlığı) gönderiyor. HTTP/1.1 301 Moved Permanently :) Şaşırtıcı değil mi? İnsanın aklına index.html baska bir yere taşınmış olabilirmi diye bir soru geliyor, ama hayır! sayfa orada duruyor. Aynı header’la gelen başka bir bilgi ise html body’si “The document has moved” tarzında bir mesaj sayfası içeriyor.

Gelen bu header’i birazdaha incelediğimde location: parametresi dikkatimi cekti. Zaten browser’ın asıl işi yapan ikinci istek header’ı da bunu destekliyor. Gelen bilgi aynen şöyle; Location: /sayfanin/bulundugu/dizin/ . Browse işlemini izlemeye devam ettiğimde browser’in sayfa taşınmış uyarısını hiç görüntülemediğini hemen ikinci yeni bir GET isteğini işleme koyduğunu gördüm. İkinci header’ın GET bölümü aynen şu şekilde GET /sayfanın/bulundugu/dizin/ , bunun ilkinden tek farkı bu sefer istek yapilan dizinin sonunda “/” işaretinin olması aynen Location: daki gibi. Yani browser sonunda “/” olmayan adresleri “/” ekleyerek tekrar deniyor.

Bundan şöyle bir sonuç çıkartılabilir; özellikle görev kritik web uygulaması geliştirenler istek veya yönlendirme yaptıkları dizin adreslerinin sonuna “/” eklemeliler. Böylece browse işlemi iki GET isteği yerine tek GET isteğiyle sonuçlandırılacaktır. Bu da sayfa güncelleme hızında bir miktar daha hız artışı sağlayabilir. Ne kadar diye merak ederseniz, bağlantı hızına göre değişir ama yuvarlak bir hesapla bir kac yüz milisaniye denilebilir. Önemsiz gibi gözüküyor ama aynı anda sunucuya bir kaç yüz kişinin ulaşmaya çalıştığını düşünürsek, bu konu daha önemli bir hale geliyor.

Bu özellik http protokolüne sonradan eklenmiş olsa gerek. Bu özelliği HTTP’den dolayı browser’larda biliyorlar ve sayfayı görüntülüyorlar. Browser ilk istekteki sunucunun gönderdiği location’i dikkate almasaydı “/” koymadan erişilmeye çalışılan sayfalar görüntülenemeyecekti.

Yazan: Tankado

CEVAP VER