14Sep

Hvorfor fejler min webbrowser undertiden ikke at vise resterende downloadtider?

click fraud protection

Nogle gange kaster den trofaste downloadfremdriftsmåler i din browser( eller et andet program) bare hænderne i luften og giver op med at vise den resterende downloadtid. Hvorfor spiler den nogle gange den forventede downloadtid og undertiden undlader at rapportere det hele sammen?

Dagens Spørgsmål &Svar session kommer til os høflighed af SuperUser-en underafdeling af Stack Exchange, en community-drevet gruppe af Q & A-websteder.

Spørgsmål

SuperUser læser Coldblackice ønsker at vide, hvorfor hans browser ikke altid retter snavs:

Af og til, når du downloader en fil i en webbrowser, kender downloadprocessen ikke "den totale størrelse af filen" ellerHvor langt i downloadet er det - det viser bare den hastighed, hvormed den downloades, med i alt som "Ukendt".

Hvorfor vil browseren ikke vide den endelige størrelse af nogle filer? Hvor får man disse oplysninger i første omgang?

Hvor rigtig?

Svarene

SuperUser bidragyder Gronostaj tilbyder følgende indsigt:

For at anmode om dokumenter fra webservere bruger browsere HTTP-protokollen. Du kan muligvis kende det navn fra din adresselinje( det kan være skjult nu, men når du klikker på adresselinjen, skal du kopiere URL'en og indsætte den i nogle tekstredigeringsprogrammer, du kan se http: // i starten).Det er en simpel tekstbaseret protokol, og det virker som dette:

instagram viewer

For det første forbindes din browser til hjemmesidenes server og sender en URL til det dokument, den ønsker at downloade( websider er også dokumenter) og nogle detaljer om selve browseren( User-Agent osv.).For eksempel, for at indlæse hovedsiden på SuperUser-webstedet, http: //superuser.com/, sender min browser en forespørgsel, der ser sådan ud:

GET / HTTP / 1.1 Host: superuser.com Forbindelse: hold i live Accept: tekst / html, ansøgning/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Bruger-agent: Mozilla / 5.0( Windows NT 6.1; WOW64) Accept-Encoding: gzip, deflate, sdch Accept-Language: pl-PLDNT: 1 Hvis-Modificeret-Siden: Tir, 09 Jul 2013 07:14:17 GMT

Den førstelinje angiver hvilket dokument serveren skal returnere. De andre linjer hedder overskrifter;De ser sådan ud:

Header navn: Header value

Disse linjer sender yderligere oplysninger, som hjælper serveren med at beslutte, hvad de skal gøre.

Hvis alt er godt, svarer serveren ved at sende det ønskede dokument. Svaret starter med en statusmeddelelse, efterfulgt af nogle overskrifter( med detaljer om dokumentet) og endelig, hvis alt er godt, dokumentets indhold. Dette er, hvad SuperUser-serverens svar til min forespørgsel ligner:

HTTP / 1.1 200 OK Cache-Control: offentlig, max-alder = 60 Content-Type: text / html;charset = utf-8 Udløber: Tir, 09 Jul 2013 07:27:20 GMT Senest ændret: Tue, 09 Jul 2013 07:26:20 GMT Varig: * X-Frame-Valg: SAMMENLIGNNING Dato: Tir, 09 Jul 201307:26:19 GMT Indholdslængde: 139672 & lt;! DOCTYPE html & gt;& Lt; html & gt;[... snip. ..] & lt; / html & gt;

Efter den sidste linje lukker SuperUser's server forbindelsen.

Den første linje( HTTP / 1.1 200 OK) indeholder svarkoden, i så fald er den 200 OK.Det betyder, at serveren vil returnere et dokument som ønsket. Når serveren ikke klarer det, bliver koden noget andet: du har sikkert set 404 ikke fundet, og 403 Forbidden er også ganske almindelig. Så følger overskrifterne.

Når browseren finder en tom linje i svaret, ved den, at alt forbi den linje er indholdet af det dokument, der blev anmodet om. Så i dette tilfælde & lt;! DOCTYPE html & gt;er den første linje i SuperUser's hjemmeside kode. Hvis jeg anmodede om et dokument til download, ville det nok være nogle gibberish tegn, fordi de fleste dokumentformater er ulæselige uden forudgående behandling.

Tilbage til overskrifter. Den mest interessante en for os er den sidste, indholdslængde. Den informerer browseren om, hvor mange byte data der skal forventes efter den tomme linje, så dybest set er det dokumentstørrelsen udtrykt i bytes. Denne overskrift er ikke obligatorisk og kan udelades af serveren. Nogle gange kan dokumentstørrelsen ikke forudsiges( for eksempel når dokumentet genereres i flyve), sommetider er dovne programmører ikke inkluderet det( ret almindeligt på driver download sites), nogle gange oprettes websites af nybegyndere, som ikke vedaf en sådan overskrift.

Uanset hvad årsagen er, kan overskriften mangle. I så fald ved browseren ikke, hvor meget data serveren skal sende, og viser således dokumentstørrelsen som ukendt og venter på, at serveren lukker forbindelsen. Og det er årsagen til ukendte dokumentstørrelser.

Har du noget at tilføje til forklaringen? Lyde af i kommentarerne. Vil du læse flere svar fra andre tech-savvy Stack Exchange brugere? Tjek den fulde diskussionstråd her.