Početna » kako da » Zašto moj web-preglednik ponekad ne prikazuje prikaz preostalog vremena preuzimanja?

    Zašto moj web-preglednik ponekad ne prikazuje prikaz preostalog vremena preuzimanja?

    Ponekad vjerni mjerač napretka preuzimanja u vašem pregledniku (ili drugoj aplikaciji) samo baca ruke u zrak i odustaje od prikazivanja preostalog vremena preuzimanja. Zašto ponekad nokti projicirano vrijeme preuzimanja i ponekad ne uspije sve prijaviti?

    Današnja sesija pitanja i odgovora dolazi nam ljubaznošću SuperUser-a, podjele Stack Exchangea, grupiranja web-lokacija za pitanja i odgovore u zajednici.

    Pitanje

    Čitač superkorisnika Coldblackice želi znati zašto njegov preglednik ne prati uvijek prljavštinu:

    Ponekad, prilikom preuzimanja datoteke u web-pregledniku, napredak preuzimanja ne "zna" ukupnu veličinu datoteke niti koliko je daleko u preuzetoj datoteci - ona samo pokazuje brzinu kojom se preuzima, s ukupno kao "nepoznato".

    Zašto preglednik ne bi znao konačnu veličinu nekih datoteka? Gdje uopće dobiva te informacije?

    Gdje doista?

    Odgovori

    Suradnik SuperUser-a Gronostaj nudi sljedeći uvid:

    Da biste zatražili dokumente s web-poslužitelja, preglednici koriste HTTP protokol. To ime možete znati iz adresne trake (možda je sada skriveno, ali kada kliknete adresnu traku, kopirajte URL i zalijepite ga u neki uređivač teksta, vidjet ćete http: // na početku). To je jednostavan tekstualni protokol i radi ovako:

    Prvo, preglednik se povezuje s poslužiteljem web-mjesta i šalje URL dokumenta koji želi preuzeti (web-stranice su također dokumenti) i neke pojedinosti o samom pregledniku (User-Agent itd.). Na primjer, da biste učitali glavnu stranicu na web-lokaciji SuperUser, http://superuser.com/, moj preglednik šalje zahtjev koji izgleda ovako:

    GET / HTTP / 1.1 Domaćin: superuser.com Veza: zadrži živ Prihvaćam: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 Korisnički agent: Mozilla / 5.0 ( Windows NT 6.1; WOW64) Prihvatiti-kodiranje: gzip, deflate, sdch Prihvatiti-jezik: pl-PL, pl; q = 0.8, en-US; q = 0.6, en; q = 0.4 Cookie: [uklonjeno radi sigurnosti] DNT : 1 If-Modified-Od: Tue, 09 Jul 2013 07:14:17 GMT 

    Prvi redak navodi koji dokument poslužitelj treba vratiti. Ostale linije nazivaju se zaglavljima; izgledaju ovako:

    Naziv zaglavlja: vrijednost zaglavlja 

    Te linije šalju dodatne informacije koje pomažu poslužitelju da odluči što će učiniti.

    Ako je sve u redu, poslužitelj će odgovoriti slanjem traženog dokumenta. Odgovor započinje porukom statusa, nakon čega slijede neka zaglavlja (s detaljima o dokumentu) i na kraju, ako je sve u redu, sadržaj dokumenta. To je odgovor SuperUser poslužitelja za moj zahtjev:

    HTTP / 1.1 200 OK Kontrola predmemorije: javna, max-age = 60 Vrsta sadržaja: text / html; charset = utf-8 Istječe: Tue, 09 Jul 2013 07:27:20 GMT Last-Modified: Tue, 09 Jul 2013 07:26:20 GMT Vary: * X-Frame-Options: SAMEORIGIN Datum: Tue, 09 Jul 2013 07:26:19 GMT Sadržaj-dužina: 139672 [… snip…]  

    Nakon zadnjeg retka, poslužitelj SuperUser-a zatvara vezu.

    Prvi redak (HTTP / 1.1 200 OK) sadrži kôd odgovora, u ovom slučaju to je 200 U redu. To znači da će poslužitelj vratiti dokument kao što je zatraženo. Kada poslužitelj to ne uspije, kod će biti nešto drugo: vjerojatno ste vidjeli 404 nije pronađeno, i 403 Zabranjeno također je uobičajeno. Zatim slijede zaglavlja.

    Kada preglednik pronađe prazan redak u odgovoru, on zna da je sve što je prošlo tu liniju sadržaj dokumenta koji je zatražio. Dakle, u ovom slučaju  je prvi redak kôda početne stranice superkorisnika. Ako tražim dokument za preuzimanje, vjerojatno će to biti neki glupi znakovi jer je većina formata dokumenata nečitljiva bez prethodne obrade.

    Natrag na zaglavlja. Za nas je najzanimljivija posljednja, Sadržaj-Dužina. Obavještava preglednik koliko bajtova podataka treba očekivati ​​nakon praznog retka, tako da je u osnovi veličina dokumenta izražena u bajtovima. Ovo zaglavlje nije obvezno i ​​poslužitelj ga može izostaviti. Ponekad se veličina dokumenta ne može predvidjeti (na primjer, kada se dokument generira u pokretu), ponekad ga lijeni programeri ne uključuju (prilično uobičajeno na web-lokacijama za preuzimanje upravljačkih programa), a ponekad web-mjesta stvaraju početnici koji ne znaju takvog zaglavlja.

    Kako god bilo, zaglavlje može nedostajati. U tom slučaju preglednik ne zna koliko će podataka poslužitelj poslati i tako će prikazati veličinu dokumenta kao nepoznata, čeka da poslužitelj zatvori vezu. I to je razlog nepoznatih veličina dokumenata.


    Imate li što dodati objašnjenju? Zvuk isključen u komentarima. Želite li pročitati više odgovora od drugih tehničkih korisnika Stack Exchangea? Pogledajte cjelokupnu temu za raspravu ovdje.