Bazen tarayıcınızdaki (veya başka bir uygulamadaki) sadık indirme ilerleme ölçeri ellerini havaya kaldırır ve kalan indirme süresini görüntülemekten vazgeçer. Neden bazen öngörülen indirme süresini kısaltır ve bazen hepsini birlikte rapor edemez?
Bugünün Soru-Cevap oturumu bize, topluluk odaklı bir Soru-Cevap web siteleri grubu olan Stack Exchange'in bir alt bölümü olan SuperUser'ın izniyle geliyor.
Soru
SuperUser okuyucu Coldblackice, tarayıcısının neden her zaman kiri dağıtmadığını öğrenmek istiyor:
Bazen, bir web tarayıcısında bir dosya indirirken, indirme ilerlemesi dosyanın toplam boyutunu veya indirme sırasında ne kadar ilerlediğini "bilmez" - yalnızca indirme hızını toplamda gösterir "Bilinmeyen" olarak.
Tarayıcı neden bazı dosyaların son boyutunu bilmiyor? Bu bilgiyi ilk etapta nereden alıyor?
Gerçekten nerede?
Cevaplar
SuperUser katılımcısı Gronostaj şu bilgileri sunuyor:
Web sunucularından belge istemek için tarayıcılar HTTP protokolünü kullanır. Bu adı adres çubuğunuzdan biliyor olabilirsiniz (şimdi gizlenmiş olabilir, ancak adres çubuğunu tıkladığınızda, URL'yi kopyalayıp bir metin düzenleyiciye yapıştırdığınızda şunu göreceksiniz:
http: //başlangıçta). Bu, metin tabanlı basit bir protokoldür ve şu şekilde çalışır:Öncelikle, tarayıcınız web sitesinin sunucusuna bağlanır ve indirmek istediği dokümanın bir URL'sini (web sayfaları da dokümanlardır) ve tarayıcının kendisiyle ilgili bazı ayrıntıları ( Kullanıcı-Aracı vb). Örneğin, ana sayfayı SuperUser sitesine yüklemek için,
http://superuser.com/, tarayıcım şuna benzer bir istek gönderiyor:GET / HTTP / 1.1 Ana bilgisayar: superuser.com Bağlantı: canlı tutma Kabul et: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 Kullanıcı Aracısı: Mozilla / 5.0 (Windows NT 6.1; WOW64) Accept-Encoding: gzip, deflate, sdch Kabul-Dili: pl-PL, pl; q = 0.8, en-US; q = 0.6, en; q = 0.4 Çerez: [removed for security] DNT: 1 Eğer-Değiştirildiyse-Beri: Sal, 09 Temmuz 2013 07:14:17 GMTİlk satır, sunucunun hangi belgeyi döndürmesi gerektiğini belirtir. Diğer satırlara başlık adı verilir; şuna benziyorlar:
Üst bilgi adı: Üst bilgi değeriBu satırlar, sunucunun ne yapacağına karar vermesine yardımcı olan ek bilgiler gönderir.
Her şey yolundaysa, sunucu istenen belgeyi göndererek yanıt verecektir. Yanıt, bir durum mesajıyla başlar, ardından bazı başlıklar (belgeyle ilgili ayrıntılarla birlikte) ve son olarak, her şey yolundaysa, belgenin içeriği. SuperUser sunucusunun isteğime verdiği yanıt şu şekilde görünüyor:
HTTP / 1.1 200 Tamam Önbellek Kontrolü: genel, maks-yaş = 60 İçerik Türü: metin / html; karakter kümesi = utf-8 Bitiş tarihi: Sal, 9 Temmuz 2013 07:27:20 GMT Son Değiştirilme Tarihi: 9 Temmuz 2013 Salı 07:26:20 GMT Farklılık göstermek: * X Çerçeve Seçenekleri: SAMEORIGIN Tarih: Sal, 9 Temmuz 2013 07:26:19 GMT İçerik Uzunluğu: 139672 <! DOCTYPE html> <html> [...snip...] </html>Son satırdan sonra, SuperUser’ın sunucusu bağlantıyı kapatır.
İlk satır (
HTTP / 1.1 200 Tamam) içerir cevap kodu , bu durumda200 Tamam. Bu, sunucunun istendiği gibi bir belge döndüreceği anlamına gelir. Sunucu bunu başaramadığında, kod başka bir şey olacaktır: muhtemelen görmüşsünüzdür404 Bulunamadı, ve403 yasakda oldukça yaygındır. Ardından başlıklar gelir.Tarayıcı yanıtta boş bir satır bulduğunda, bu satırı geçen her şeyin istediği belgenin içeriği olduğunu bilir. Yani bu durumda
<! DOCTYPE html>Süper Kullanıcı ana sayfa kodunun ilk satırıdır. Bir belgenin indirilmesini talep ediyor olsaydım, muhtemelen bazı anlamsız karakterler olurdu, çünkü çoğu belge biçimi önceden işlenmeden okunamaz.Başlıklara dön. Bizim için en ilginç olan sonuncusu,
İçerik Uzunluğu. Tarayıcıya boş satırdan sonra kaç bayt veri beklemesi gerektiğini bildirir, dolayısıyla temelde bayt cinsinden ifade edilen belge boyutudur. Bu başlık zorunlu değildir ve sunucu tarafından ihmal edilebilir. Bazen belge boyutu tahmin edilemez (örneğin, belge anında oluşturulduğunda), bazen tembel programcılar onu dahil etmez (sürücü indirme sitelerinde oldukça yaygındır), bazen web siteleri bilmeyen yeni başlayanlar tarafından oluşturulur böyle bir başlığın.Her neyse, nedeni ne olursa olsun, başlık eksik olabilir. Bu durumda tarayıcı, sunucunun ne kadar veri göndereceğini bilemez ve bu nedenle belge boyutunu şu şekilde görüntüler: Bilinmeyen , sunucunun bağlantıyı kapatması bekleniyor. Bilinmeyen belge boyutlarının nedeni de budur.