14Sep

Miks mu veebibrowser mõnikord ei kuvata allalaadimise aegu?

Mõnikord laseb brauseris( või mõnel muul rakendusel) usaldusväärne allalaadimisprotsessimõõtja lihtsalt õhk käed välja ja loobub ülejäänud allalaadimisaja näitamisest. Miks mõnikord kleebib see prognoositavat allalaadimisaega ja mõnikord ei tee seda kõik koos?

tänapäeva küsimus &Vastuste seanss tuleb meile viisakalt SuperUseriga - Q & A veebisaitide kogukonnapõhise grupi Stack Exchange jagunemisest.

Küsimus

SuperUser-lugeja Coldblackice tahab teada, miks tema brauser ei pruugi alati mustust pritsida:

Vahel võib faili allalaadimine veebibrauseris allalaadimise edenemine "teada" faili kogusumma võikui palju see on allalaadimisel - see näitab ainult selle allalaadimise kiirust, kokku "teadmata".

Miks brauser ei tea mõne faili lõplikku suurust? Kus see teave kõigepealt kätte jõuab?

kus tõepoolest?

Vastused

SuperUser kaastöötaja Gronostaj pakub järgmist teavet:

Veebiserverite dokumentide taotlemiseks kasutavad brauserid HTTP-protokolli. Te võite teada, et see nimi on teie aadressiribalt( see võib olla nüüd peidus, aga kui te klõpsate aadressiribal, kopeerige URL ja kleepige see mõnes tekstitöötluses, näete alguses http: //).See on lihtne tekstil põhinev protokoll ja see toimib järgmiselt:

Esiteks, teie brauser ühendab veebisaidi serveriga ja saadab URL-i dokumendist, mida ta soovib alla laadida( veebilehed on ka dokumendid) ja mõned üksikasjad brauseri enda kohta( Kasutajaagent jne).Näiteks, kui laadite peamiseks lehte SuperUseri saidil, http: //superuser.com/, saadab mu 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 Kasutaja-agent: Mozilla / 5.0( Windows NT 6.1; WOW64) Nõustumiskoodering: gzip, deflate, sdch Accept-Language: pl-PL, pl; q = 0,8, en-us; q = 0,6; en; q = 0,4 küpsis: [eemaldatud turvalisuse tagamiseks] DNT: 1 Kui muudetud - alates: T, 09 Juuli 2013 07:14:17 GMT

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

päise nimi: päise väärtus

Need read saadavad lisateavet, mis aitab serveril otsustada, mida teha.

Kui kõik on hästi, vastab server, saates nõutud dokumendi. 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: avalik, max-age = 60 Content-Type: text / html;charset = utf-8 Aegub: T, 09 Juuni 2013 07:27:20 GMT Viimati muudetud: T, 09 Juuni 2013 07:26:20 GMT Muudetakse: * X-Frame-Options: SAMEORIGIN Kuupäev: T, 9. juuli 201307:26:19 GMT Sisu-pikkus: 139672 & lt;! DOCTYPE html & gt;& lt; html & gt;[... snip. ..] & lt; / html & gt;

Pärast viimast rida sulgeb ühenduse SuperUseri server.

Esimene rida( HTTP / 1.1 200 OK) sisaldab vastusekoodi, antud juhul on see 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 kogu selle rea viimane on soovitud dokumendi sisu. Nii et antud juhul DOCTYPE html>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äisesse. Kõige huvitavam on meie jaoks viimane sisu-pikkus. 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 teasellist päist.

Igal juhul, olenemata põhjusest, võib päis olla puudu. Sellisel juhul ei tea brauser, kui palju andmeid server serveril saadab, ja seega näitab dokumendi suurust tundmatu , 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.