Noen ganger kaster den trofaste nedlastingsfremdriftsmåleren i nettleseren din (eller et annet program) bare hendene i været og gir opp å vise gjenværende nedlastingstid. Hvorfor spikrer det noen ganger den anslåtte nedlastingstiden, og noen ganger unnlater det å rapportere alt sammen?
Dagens spørsmål og svar-økt kommer til oss med tillatelse fra SuperUser - en underavdeling av Stack Exchange, en samfunnsdrevet gruppe av spørsmål og svar-nettsteder.
Spørsmålet
SuperUser-leser Coldblackice vil vite hvorfor nettleseren hans ikke alltid retter skitten:
Noen ganger, når du laster ned en fil i en nettleser, "vet" ikke nedlastingsfremdriften den totale størrelsen på filen, eller hvor langt i nedlastingen den er - den viser bare hastigheten den lastes ned med, totalt som “Ukjent”.
Hvorfor vet ikke nettleseren den endelige størrelsen på noen filer? Hvor får den denne informasjonen i utgangspunktet?
Hvor faktisk?
Svarene
SuperUser-bidragsyter Gronostaj tilbyr følgende innsikt:
For å be om dokumenter fra webservere, bruker nettlesere HTTP-protokollen. Du vet kanskje navnet fra adressefeltet ditt (det kan være skjult nå, men når du klikker på adresselinjen, kopierer du nettadressen og limer den inn i et tekstredigeringsprogram, ser du
http: //i begynnelsen). Det er en enkel tekstbasert protokoll, og den fungerer slik:Først kobles nettleseren din til nettstedets server og sender en URL til dokumentet den vil laste ned (nettsider er også dokumenter) og noen detaljer om selve nettleseren ( Bruker agent etc). For eksempel, for å laste hovedsiden på SuperUser-nettstedet,
http://superuser.com/, nettleseren min sender en forespørsel som ser slik ut:GET / HTTP / 1.1 Vert: superuser.com Tilkobling: hold deg i live Godta: tekst / html, applikasjon / xhtml + xml, applikasjon / xml; q = 0,9, * / *; q = 0,8 Brukeragent: Mozilla / 5.0 (Windows NT 6.1; WOW64) Godta-koding: gzip, deflate, sdch Godta-språk: pl-PL, pl; q = 0,8, en-US; q = 0,6, en; q = 0,4 Informasjonskapsel: [removed for security] DNT: 1 Hvis-modifisert-siden: ti. 09 jul 2013 07:14:17 GMTDen første linjen spesifiserer hvilket dokument serveren skal returnere. De andre linjene kalles overskrifter; de ser slik ut:
Topptekstnavn: TopptekstverdiDisse linjene sender tilleggsinformasjon som hjelper serveren til å bestemme hva den skal gjøre.
Hvis alt er bra, vil serveren svare 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å forespørselen min ut:
HTTP / 1.1 200 OK Cache-kontroll: offentlig, maks alder = 60 Innholdstype: tekst / html; charset = utf-8 Utløper: Tirsdag 9. juli 2013 07:27:20 GMT Sist endret: Tirsdag, 9. juli 2013 07:26:20 GMT Varier: * X-Frame-Options: SAMEORIGIN Dato: Tirsdag 9. juli 2013 07:26:19 GMT Innholdslengde: 139672 <! DOCTYPE html> <html> [...snip...] </html>Etter den siste linjen lukker SuperUser-serveren forbindelsen.
Første linje (
HTTP / 1.1 200 OK) inneholder svarskode , i dette tilfellet er det200 OK. Det betyr at serveren vil returnere et dokument, slik det er bedt om. Når serveren ikke klarer det, vil koden være noe annet: du har sannsynligvis sett404 ikke funnet, og403 Forbudter ganske vanlig også. Så følger overskriftene.Når nettleseren finner en tom linje i svaret, vet den at alt forbi den linjen er innholdet i dokumentet den ba om. Så i dette tilfellet
<! DOCTYPE html>er den første linjen i SuperUser-hjemmesidekoden. Hvis jeg ba om et dokument for å laste ned, ville det sannsynligvis være noen gibberish tegn, fordi de fleste dokumentformater er uleselige uten tidligere behandling.Tilbake til overskrifter. Den mest interessante for oss er den siste,
Innholdslengde. Den informerer nettleseren om hvor mange byte med data den kan forvente etter den tomme linjen, så i utgangspunktet er det dokumentstørrelsen uttrykt i byte. Denne overskriften er ikke obligatorisk og kan utelates av serveren. Noen ganger kan ikke dokumentstørrelsen forutsies (for eksempel når dokumentet genereres på farten), noen ganger inkluderer ikke late programmerere det (ganske vanlig på drivernedlastingssider), noen ganger blir nettsteder opprettet av nybegynnere som ikke vet av en slik header.Uansett, uansett årsak, kan overskriften mangle. I så fall vet ikke nettleseren hvor mye data serveren skal sende, og viser dermed dokumentstørrelsen som ukjent , venter på at serveren lukker forbindelsen. Og det er årsaken til ukjente dokumentstørrelser.