Hvorfor mislykkes nettleseren min til å vise resterende nedlastingstider?

Innholdsfortegnelse:

Hvorfor mislykkes nettleseren min til å vise resterende nedlastingstider?
Hvorfor mislykkes nettleseren min til å vise resterende nedlastingstider?

Video: Hvorfor mislykkes nettleseren min til å vise resterende nedlastingstider?

Video: Hvorfor mislykkes nettleseren min til å vise resterende nedlastingstider?
Video: 1986 Range Rover; Will it start? - Edd China's Workshop Diaries - YouTube 2024, Mars
Anonim
Noen ganger kaster den trofaste nedlastingsfremdriftsmåleren på nettleseren din (eller et annet program) bare hendene i luften og gir opp med å vise gjenværende nedlastingstid. Hvorfor spiser det noen ganger den projiserte nedlastningstiden, og noen ganger mislykkes det å rapportere alt sammen?
Noen ganger kaster den trofaste nedlastingsfremdriftsmåleren på nettleseren din (eller et annet program) bare hendene i luften og gir opp med å vise gjenværende nedlastingstid. Hvorfor spiser det noen ganger den projiserte nedlastningstiden, og noen ganger mislykkes det å rapportere alt sammen?

Dagens Spørsmål & Svar-sesjon kommer til oss med høflighet av SuperUser-en underavdeling av Stack Exchange, en fellesskapsdrevet gruppering av Q & A-nettsteder.

Spørsmålet

SuperUser leser Coldblackice vil vite hvorfor nettleseren sin ikke alltid smutter på smuss:

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?

Hvor egentlig?

Svarene

SuperUser-bidragsyter Gronostaj tilbyr følgende innsikt:

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://

i begynnelsen). Det er en enkel tekstbasert protokoll, og det virker slik:

For det første kobler nettleseren til nettserverens server og sender en URL til dokumentet den vil laste ned (nettsider er også dokumenter) og noen detaljer om selve nettleseren (User-Agent etc). For eksempel, for å laste hovedsiden på SuperUser-siden,

https://superuser.com/

min nettleser sender en forespørsel som ser slik ut:

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

Den første linjen angir hvilket dokument serveren skal returnere. De andre linjene kalles overskrifter; de ser slik ut:

Header name: Header value

Disse linjene sender ytterligere informasjon som hjelper serveren til å bestemme hva de skal gjøre.

Hvis alt er bra, svarer serveren ved å sende det forespurte dokumentet. Svaret starter med en statusmelding, etterfulgt av noen overskrifter (med detaljer om dokumentet) og til slutt, hvis alt er bra, dokumentets innhold. Slik ser SuperUser-serverens svar på min forespørsel ut:

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…]

Etter siste linje lukker SuperUser-serveren tilkoblingen.

Den første linjen (

HTTP/1.1 200 OK

) inneholder svarkoden, i dette tilfellet er det

200 OK

. Det betyr at serveren vil returnere et dokument, etterspurt. Når serveren ikke klarer å gjøre det, vil koden være noe annet: du har sikkert sett

404 Not Found

og

403 Forbidden

er ganske vanlig også. Deretter følger overskriftene.

Når nettleseren finner en tom linje i svaret, vet han at alt forbi den linjen er innholdet i dokumentet som det søkte om. Så i dette tilfellet

er den første linjen i SuperUser's hjemmeside kode. Hvis jeg ber om at et dokument skal lastes ned, vil det trolig være noe gibberish-tegn, fordi de fleste dokumentformater er ulæselige uten forbehandling.

Tilbake til overskriftene. Den mest interessante en for oss er den siste,

Content-Length

. Den informerer nettleseren hvor mange bytes data det skal forvente etter den tomme linjen, så det er i utgangspunktet dokumentstørrelsen uttrykt i byte. Denne overskriften er ikke obligatorisk og kan utelates av serveren. Noen ganger kan dokumentstørrelsen ikke forutsies (for eksempel når dokumentet genereres på fluen), noen ganger er det ikke lette programmerere som inkluderer det (ganske vanlig på drivernedlastingsnettsteder), noen ganger er nettsteder opprettet av nybegynnere som ikke vet av en slik topptekst.

Uansett, uansett årsaken er at overskriften kan mangle. I så fall vet ikke nettleseren hvor mye data serveren skal sende, og viser dermed dokumentstørrelsen somukjent, og venter på at serveren skal lukke tilkoblingen. Og det er grunnen til ukjente dokumentstørrelser.

Har du noe å legge til forklaringen? Lyde av i kommentarene. Vil du lese flere svar fra andre tech-savvy Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her.

Anbefalt: