14Sep
Noen ganger kaster den trofaste nedlastingsfremdriftsmåleren på din nettleser( 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 ønsker å vite hvorfor nettleseren sin ikke alltid smutter på smuss:
Av og til, når du laster ned en fil i en nettleser, kjenner nedlastingsprosessen "ikke" den totale størrelsen på filen, ellerhvor langt i nedlastingen er det - det viser bare hastigheten som det lastes ned, med totalt som "Ukjent".
Hvorfor vil ikke nettleseren vite den endelige størrelsen på noen filer? Hvor får den denne informasjonen i utgangspunktet?
Hvor er det?
Svarene
SuperUser-bidragsyter Gronostaj tilbyr følgende innsikt:
Hvis du vil be om dokumenter fra webservere, bruker nettlesere HTTP-protokollen. Du kan kanskje kjenne det navnet fra adresselinjen din( det kan være skjult nå, men når du klikker adresselinjen, kopierer du nettadressen og limer den inn i enkelte tekstredigeringsprogrammer, du får se http: // i begynnelsen).Det er en enkel tekstbasert protokoll, og det virker slik:
Først 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, http: //superuser.com/, sender nettleseren min en forespørsel som ser slik ut:
GET / HTTP / 1.1 Host: superuser.com Connection: keep-alive Godta: tekst / html, søknad/xhtml+xml,application/xml;q=0.9 Bruker-agent: Mozilla / 5.0( Windows NT 6.1; WOW64) Godta-koding: gzip, deflate, sdch Godta språk: pl-PLDNT: 1 Hvis-Modifisert-Siden: Tir, 09 Jul 2013 07:14:17 GMTDen førstelinje angir hvilket dokument serveren skal returnere. De andre linjene kalles overskrifter;De ser slik ut:
Header name: Header valueDisse linjene sender ytterligere informasjon som hjelper serveren til å bestemme hva som skal gjøres.
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-kontroll: offentlig, maksimal alder = 60 Innholdstype: tekst / html;charset = utf-8 Utløper: Tir, 09 Jul 2013 07:27:20 GMT Senest endret: Tue, 09 Jul 2013 07:26:20 GMT Varig: * X-Frame-Valg: SAMMENLIGNING Dato: Tir, 09 Jul 201307:26:19 GMT Innholdslengde: 139672 & lt;! DOCTYPE html & gt;& Lt; html & gt;[... snip. ..] & lt; / html & gt;Etter siste linje lukker SuperUser-serveren tilkoblingen.
Den første linjen( HTTP / 1.1 200 OK) inneholder svarskoden, 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 ikke funnet, og 403 forbudt 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 & lt;! DOCTYPE html & gt;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 overskrifter. Den mest interessante en for oss er den siste, innholdslengde. 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 vetav en slik topptekst.
Uansett, uansett grunnen, kan overskriften mangle. I så fall vet nettleseren ikke hvor mye data serveren skal sende, og viser dermed dokumentstørrelsen som ukjente , 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.