Miks mu veebibrowser mõnikord ei kuvata allalaadimise aegu?

Sisukord:

Miks mu veebibrowser mõnikord ei kuvata allalaadimise aegu?
Miks mu veebibrowser mõnikord ei kuvata allalaadimise aegu?

Video: Miks mu veebibrowser mõnikord ei kuvata allalaadimise aegu?

Video: Miks mu veebibrowser mõnikord ei kuvata allalaadimise aegu?
Video: OpenSSH for Windows: Install, Configure, Connect, and Troubleshoot - YouTube 2024, Aprill
Anonim
Mõnikord võimaldab brauseri (või muu rakenduse) usaldusväärne allalaadimise edenemisarvesti lihtsalt õhk käes käes ja loobub järelejäänud allalaadimisaja kuvamisest. Miks mõnikord kleebib see prognoositavat allalaadimisaega ja mõnikord ei tee seda kõik koos?
Mõnikord võimaldab brauseri (või muu rakenduse) usaldusväärne allalaadimise edenemisarvesti lihtsalt õhk käes käes ja loobub järelejäänud allalaadimisaja kuvamisest. Miks mõnikord kleebib see prognoositavat allalaadimisaega ja mõnikord ei tee seda kõik koos?

Tänane küsimuste ja vastuste seanss jõuab meile viisakalt SuperUserini - Stack Exchange'i ja kogukonnapõhiste Q & A veebisaitide rühmitusse.

Küsimus

SuperUseri lugeja Coldblackice tahab teada, miks tema brauser ei pruugi alati mustust varjata:

Occasionally, when downloading a file in a web browser, the download progress doesn’t “know” the total size of the file, or how far along in the download it is - it just shows the speed at which it’s downloading, with a total as “Unknown”.

Why wouldn’t the browser know the final size of some files? Where does it get this information in the first place?

Kus tõesti?

Vastused

SuperUseri toetaja Gronostaj pakub järgmist teavet:

To request documents from web servers, browsers use the HTTP protocol. You may know that name from your address bar (it may be hidden now, but when you click the address bar, copy the URL and paste it in some text editor, you’ll see

https://

alguses). See on lihtne tekstil põhinev protokoll ja see toimib järgmiselt:

Esiteks ühendab teie brauser veebisaidi serveriga ja saadab URL-i dokumendist, mida ta soovib alla laadida (veebilehed on ka dokumendid) ja mõned üksikasjad brauseri enda kohta (kasutaja-agent jne). Näiteks, kui laadite peamist lehte SuperUseri saidil,

https://superuser.com/

saadab brauser päringu, mis näeb välja selline:

GET / HTTP/1.1 Host: superuser.com Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) Accept-Encoding: gzip,deflate,sdch Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: [removed for security] DNT: 1 If-Modified-Since: Tue, 09 Jul 2013 07:14:17 GMT

Esimene rida määrab, millise dokumendi peaks server tagastama. Teised read nimetatakse päisteks; nad näevad välja nii:

Header name: Header value

Need read sisaldavad täiendavat teavet, mis aitab serveril otsustada, mida teha.

Kui kõik on hästi, vastab server vastuseks soovitud dokumendi saatmisele. Vastus algab olekuteatega, millele järgneb mõni päis (koos dokumendi üksikasjadega) ja lõpuks, kui kõik on hästi, siis dokumendi sisu. See on see, mida SuperUseri serveri vastus minu päringule näeb välja:

HTTP/1.1 200 OK Cache-Control: public, max-age=60 Content-Type: text/html; charset=utf-8 Expires: Tue, 09 Jul 2013 07:27:20 GMT Last-Modified: Tue, 09 Jul 2013 07:26:20 GMT Vary: * X-Frame-Options: SAMEORIGIN Date: Tue, 09 Jul 2013 07:26:19 GMT Content-Length: 139672 […snip…]

Pärast viimast rida sulgeb SuperUseri server sulge ühenduse.

Esimene rida (

HTTP/1.1 200 OK

) sisaldab vastusekoodi, antud juhul see on

200 OK

. See tähendab, et server tagastab dokumendi, nagu seda on nõutud. Kui server seda ei suuda, on kood midagi muud: olete ilmselt näinud

404 Not Found

ja

403 Forbidden

on üsna tavaline ka. Siis järgivad päised.

Kui brauser leiab vastuses tühja reani, teab, et kõike selle rea kohta on nõutud dokumendi sisu. Nii et sel juhul

on SuperUseri kodulehe koodi esimene rida. Kui ma paluksin allalaaditavat dokumenti, oleks see tõenäoliselt mõnda kujutist, sest enamik dokumendivorminguid on ilma eelneva töötlemiseta loetavad.

Tagasi päiste juurde. Kõige huvitavam on meie jaoks viimane,

Content-Length

. See teavitab brauserit, kui palju baidi andmeid peaks ootama pärast tühja rida, nii et põhimõtteliselt on see dokumendi suurus baitides. See päis ei ole kohustuslik ja võib seda serverist välja jätta. Mõnikord ei saa dokumendi suurust ennustada (näiteks siis, kui dokument luuakse lennult), mõnikord laisk programmeerijad seda ei lisata (see on juurelaadimise saitidel üsna tavaline), mõnikord veebisaite loovad uustulnukad, kes ei tea sellist päist.

Igatahes, mis tahes põhjusel, võib päis olla puudu. Sellisel juhul ei tea brauser, kui palju andmeid server saadab, ja kuvab seega dokumendi suuruseteadmata, oodates serveri ühenduse sulgemiseks. Ja see on teadmata dokumentide suuruse põhjus.

Kas teil on seletamiseks midagi lisada? Helistage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Tutvu täieliku arutelu teemaga siit.

Soovitan: