Miks on minu veebibrauser mõnikord ebaõnnestunud järelejäänud allalaadimisaegade kuvamiseks?
Vahel teie brauseri (või muu rakenduse) ustav allalaadimise edenemismõõtja viskab oma käed õhku ja loobub allesjäänud allalaadimisaja kuvamisest. Miks mõnikord nailitakse kavandatud allalaadimisaega ja mõnikord ei teata sellest kõik koos?
Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.
Küsimus
SuperUser-lugeja Coldblackice tahab teada, miks tema brauser ei pruugi alati mustust süüa:
Aeg-ajalt, kui laadite faili veebibrauseris alla, ei suuda allalaadimise edenemine faili üldist suurust teada või kui kaugel on see allalaaditud failis - see näitab lihtsalt selle allalaadimise kiirust, kokku nagu “Tundmatu”.
Miks ei tea brauser mõne faili lõplikku suurust? Kust see teave kõigepealt saadakse?
Kus tegelikult?
Vastused
SuperUser'i toetaja Gronostaj pakub järgmist teavet:
Veebiserverilt dokumentide taotlemiseks kasutavad brauserid HTTP-protokolli. Te võite selle nime teada oma aadressiribalt (see võib olla nüüd peidetud, kuid kui klõpsate aadressiribale, kopeerige URL ja kleepige see mõnda tekstiredaktorisse, näete
http: //
alguses). See on lihtne tekstipõhine protokoll ja see toimib nii:Esiteks, teie brauser ühendub veebisaidi serveriga ja saadab selle dokumendi URL-i, mida ta soovib alla laadida (ka veebilehed on dokumendid) ja mõned üksikasjad brauseri enda kohta (kasutajaagent jne). Näiteks selleks, et laadida SuperUser saidi põhileht,
http://superuser.com/
, minu brauser saadab päringu, mis näeb välja selline:GET / HTTP / 1.1 Host: superuser.com Ühendus: keep-alive Nõustu: text / html, application / xhtml + xml, application / xml; q = 0,9, * / *; q = 0.8 Kasutaja-agent: Mozilla / 5.0 ( Windows NT 6.1; WOW64) aktsepteerib kodeerimist: gzip, deflate, sdch Accept-Language: pl-PL, pl; q = 0,8, en-US; q = 0,6, en; q = 0.4 küpsis: [eemaldatud turvalisuse jaoks] DNT : 1 Kui muudetud - alates: teisel, 09.07.2013 07:14:17 GMT
Esimeses reas määratletakse, millist dokumenti server peaks tagastama. Teisi ridu nimetatakse päisteks; nad näevad välja selline:
Päise nimi: päise väärtus
Need read saadavad täiendavat teavet, mis aitab serveril otsustada, mida teha.
Kui kõik on hästi, vastutab server soovitud dokumendi saatmisega. Vastus algab olekusõnumiga, millele järgneb mõned päised (dokumendi üksikasjadega) ja lõpuks, kui kõik on hästi, siis dokumendi sisu. See näeb välja nagu SuperUser-serveri vastus minu päringule:
HTTP / 1.1 200 OK Vahemälu-kontroll: avalik, maksimaalne vanus = 60 Sisu-tüüp: text / html; charset = utf-8 Aegub: teisel, 09.07.2013 07:27:20 GMT Viimati muudetud: teisel, 09. juulil 2013 07:26:20 GMT Vary: * X-Frame-valikud: SAMEORIGIN Kuupäev: ti, 09.07.2013 07:26:19 GMT sisu-pikkus: 139672 [… snip…]
Pärast viimast rida sulgeb SuperUseri server ühenduse.
Esimene rida (
HTTP / 1.1 200 OK
) sisaldab vastuskoodi, sellisel juhul see on200 OK
. See tähendab, et server tagastab dokumendi vastavalt soovile. Kui server seda ei õnnestu, on kood midagi muud: olete ilmselt näinud404 Ei leitud
, ja403 Keelatud
on üsna tavaline. Seejärel järgivad päised.Kui brauser leiab vastuses tühja rea, teab ta, et kõike seda joont mööda on dokumendi sisu, mida ta soovis. Nii et antud juhul
on SuperUseri kodulehe koodi esimene rida. Kui ma küsisin allalaaditava dokumendi esitamist, oleks tõenäoliselt mõningaid sümboleid, sest enamik dokumendi vorminguid ei ole enne töötlemist loetavad..
Tagasi päiste juurde. Kõige huvitavam on meie jaoks viimane,
Sisu pikkus
. See teavitab brauserit, kui palju bait andmeid peaks ootama pärast tühja rida, seega on see põhimõtteliselt dokumendi suurus baitides. See päis ei ole kohustuslik ning server võib selle ära jätta. Mõnikord ei ole võimalik dokumendi suurust ennustada (näiteks kui dokument on koostatud lennul), ei pruugi mõnikord laisk programmeerijad seda lisada (juhtide allalaadimissaitidel üsna tavaline), mõnikord luuakse veebisaite algajaid, kes ei tea sellisest päisest.Igatahes, olenemata põhjusest, võib päis puududa. Sel juhul ei tea brauser, kui palju andmeid serverisse saadetakse, ja näitab seega dokumendi suurust teadmata, ootab, et server sulgeks ühenduse. Ja see on põhjus, miks dokumendid on teadmata.
Kas teil on midagi lisada selgitusele? Hääletage kommentaarides. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.