14Sep

Neden Web Tarayıcım Bazen Kalan İndirme Sürelerini Görüntülemiyor?

Bazen tarayıcınızda( veya başka bir uygulamanın) sadık indirme ilerleme ölçeri elini havaya fırlatır ve kalan indirme süresini göstermekten vazgeçirir. Neden bazen öngörülen indirme süresini çivi çakar ve bazen birlikte rapor edemez?

Bugünkü Soru &Yanıt oturumu bize Q & A web sitelerinin topluluk temelli bir gruplandırması olan Stack Exchange'in bir alt bölümü olan SuperUser nezaketen geliyor.

Soru

SuperUser okuyucu Coldblackice, tarayıcısının neden kiri bulmadığını bilmek istiyor:

Bazen bir dosyayı bir web tarayıcısında indirirken indirme ilerlemesi dosyanın toplam boyutunu "bilmiyor" veyaİndirme işleminin ne kadar ilerlediği - yalnızca indirmekte olduğu hızı, toplamı "Bilinmiyor" olarak gösteriyor.

Tarayıcı bazı dosyaların nihai boyutunu neden bilmiyor? Bu bilgiyi nereden buluyor?

Nerede kaldı?

Yanıtlar

SuperUser katkıda bulunan Gronostaj aşağıdaki bilgileri sunar:

Web sunucularından belge istemek için tarayıcılar HTTP protokolünü kullanır. Bu adı adres çubuğunuzdan bildirebilirsiniz( şimdi gizlenmiş olabilir, ancak adres çubuğunu tıkladığınızda URL'yi kopyalayıp bir metin düzenleyicisine yapıştırırsanız, başlangıçta http: // görürsünüz).Basit bir metin tabanlı protokoldür ve şu şekilde çalışır:

Önce, tarayıcınız web sitesinin sunucusuna bağlanır ve indirmek istediği belgenin bir URL'sini( web sayfaları da belgelerdir) ve tarayıcının kendisiyle ilgili bazı ayrıntıları gönderir( Kullanıcı Aracısı vb.).Örneğin, ana sayfayı SuperUser sitesinde( http: //superuser.com/) yüklemek için tarayıcım aşağıdaki gibi bir istek gönderir:

GET / HTTP / 1.1 Ana Makine: superuser.com Bağlantı: canlı tutma Kabul et: metin / html, uygulama/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Kullanıcı Aracı: Mozilla / 5.0( Windows NT 6.1; WOW64) Kabul - Kodlama: gzip, deflate, sdch Kabul Dili: pl-PL, pl; q = 0.8, en-US; q = 0.6, en; q = 0.4 Çerez: [güvenlik için kaldırıldı] DNT: 1 If-Modified-Since: Salı, 09 Tem 2013 07:14:17 GMT

İlksatırı, sunucunun hangi belgeye dönmesi gerektiğini belirtir. Diğer satırlara başlıklar denir;

Üstbilgi adı: Başlık değeri

Bu satırlar, sunucuya ne yapacağınıza karar vermesine yardımcı olan ek bilgiler gönderir.

Herkes iyi idiyse, sunucu istenen belgeyi göndererek yanıt verir. Yanıt, bazı mesaj başlıklarının( belge ile ilgili ayrıntılarıyla birlikte) ardından bir durum mesajı ile başlar ve nihayet, hepsi iyi olursa, dokümanın içeriği olur. Benim isteğim için SuperUser sunucusunun cevabı şudur:

HTTP / 1.1 200 Tamam Cache-Control: public, max-age = 60 İçerik Türü: text / html;charset = utf-8 Expires: Salı, 09 Tem 2013 07:27:20 GMT Son-Modified: Salı, 09 Tem 2013 07:26:20 GMT Değiştirme: * X-Frame-Options: SAMEORIGIN Tarih: Salı, 09 Tem 201307:26:19 GMT İçerik-Uzunluk: 139672 & lt;! DOCTYPE html & gt;& Lt; html & gt;[... snip. ..] & lt; / html & gt;

Son satırdan sonra SuperUser sunucusu bağlantıyı kapatır.

İlk satır( HTTP / 1.1 200 OK) yanıt kodunu içerir, bu durumda 200 OK'dir. Bu, sunucunun talep ettiği gibi bir belge döndürmesi anlamına gelir. Sunucu bunu yapmayı başaramadığında, kod başka bir şey olacaktır: muhtemelen 404 Bulunamadığını gördünüz ve Yasak 403 de oldukça yaygındır. Sonra başlıkları takip eder.

Tarayıcı yanıtta boş bir satır bulduğu zaman, o satırın sonundaki her şeyin istediği belgenin içeriği olduğunu bilir. Bu durumda & lt;! DOCTYPE html & gt;SuperUser'ın ana sayfa kodunun ilk satırıdır.İndirme amaçlı bir belge talep ediyorsam, çoğu belge biçimi önceden işleme tabi tutulmadan okunamayacağından muhtemelen anlamsız karakterler olurdu.

Başlıklara dön. Bizim için en ilginç olan sonuncusu, İçerik Uzunluğu. Boş satırdan sonra ne kadar bayt veri beklediğini tarayıcıya bildirir, böylece temelde belge boyutu bayt olarak ifade edilir. Bu başlık zorunlu değildir ve sunucu tarafından atlanabilir. Bazen belge boyutu tahmin edilemez( örneğin, belge anında oluşturulduğunda), bazen tembel programcılar onu içermez( bazen sürücü indirme sitelerinde yaygındır), bazen web siteleri bilmeyenlere göre oluşturulurBöyle bir başlık.

Her neyse, sebep ne olursa olsun, başlık eksik olabilir. Bu durumda tarayıcı sunucunun ne kadar veri göndereceğini bilmiyor ve böylece belgenin boyutunu bilinmeyen olarak görüntüleyerek sunucunun bağlantıyı kapatmasını bekliyor. Ve bilinmeyen belge boyutlarının nedeni de budur.

Açıklamaya eklemek için bir şey var mı?Açıklamalarda ses çıkıyor. Diğer teknik uzman Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Buradaki tam tartışma dizinine göz atın.