Joskus uskollinen latauksen edistymismittari selaimellasi (tai muussa sovelluksessa) vain heittää kätensä ilmaan ja luopuu jäljellä olevan latausajan näyttämisestä. Miksi se joskus naulaa ennustetun latausajan ja toisinaan jättää raportoimatta kaiken yhdessä?
Tämän päivän Kysymys- ja vastausistunto tulee meille SuperUser-yhteisöstään, joka on Stack Exchangen osasto.
Kysymys
SuperUser-lukija Coldblackice haluaa tietää, miksi selain ei aina poista likaa:
Toisinaan ladattaessa tiedostoa verkkoselaimella latauksen edistyminen ei "tiedä" tiedoston kokoa tai sitä, kuinka pitkälle lataus on - se vain osoittaa lataamisen nopeuden, yhteensä nimellä "Tuntematon".
Miksi selain ei tiedä joidenkin tiedostojen lopullista kokoa? Mistä se saa nämä tiedot?
Missä todellakin?
Vastaukset
SuperUser-avustaja Gronostaj tarjoaa seuraavan oivalluksen:
Selaimet käyttävät HTTP-protokollaa pyytääksesi asiakirjoja verkkopalvelimilta. Saatat tietää tämän nimen osoiteriviltä (se voi olla piilotettu nyt, mutta kun napsautat osoiteriviä, kopioi URL-osoite ja liitä se johonkin tekstieditoriin, näet
http: //alussa). Se on yksinkertainen tekstipohjainen protokolla ja se toimii näin:Ensinnäkin selaimesi muodostaa yhteyden verkkosivuston palvelimeen ja lähettää ladattavan asiakirjan URL-osoitteen (myös verkkosivut ovat asiakirjoja) ja joitain yksityiskohtia itse selaimesta ( Käyttäjä agentti jne). Jos esimerkiksi haluat ladata pääsivun SuperUser-sivustolle,
http://superuser.com/, selaimesi lähettää pyynnön, joka näyttää tältä:GET / HTTP / 1.1 Isäntä: superuser.com Yhteys: pidä hengissä Hyväksy: teksti / html, sovellus / xhtml + xml, sovellus / xml; q = 0,9, * / *; q = 0,8 User-Agent: Mozilla / 5.0 (Windows NT 6.1; WOW64) Hyväksy-koodaus: gzip, deflate, sdch Hyväksy kieli: pl-PL, pl; q = 0,8, en-US; q = 0,6, en; q = 0,4 Eväste: [removed for security] DNT: 1 If-Modified-Since: ti, 9. heinäkuuta 2013 07:14:17 GMTEnsimmäinen rivi määrittää, minkä asiakirjan palvelimen tulisi palauttaa. Muita rivejä kutsutaan otsikoiksi; ne näyttävät tältä:
Otsikon nimi: Otsikon arvoNämä rivit lähettävät lisätietoja, joiden avulla palvelin voi päättää mitä tehdä.
Jos kaikki on hyvin, palvelin vastaa lähettämällä pyydetyn asiakirjan. Vastaus alkaa tilaviestillä, jota seuraavat jotkut otsikot (yksityiskohdat dokumentista) ja lopuksi, jos kaikki on hyvin, asiakirjan sisältö. Näin näyttää SuperUser-palvelimen vastaus pyyntöni:
HTTP / 1.1 200 OK Välimuistin hallinta: julkinen, korkein ikä = 60 Sisältötyyppi: teksti / html; merkkisarja = utf-8 Vanhenee: tiistaina 9. heinäkuuta 2013 07:27:20 GMT Muokattu viimeksi: tiistaina 9. heinäkuuta 2013 07:26:20 GMT Vaihtele: * X-Frame-Options: SAMEORIGIN Päivämäärä: ti, 9. heinäkuuta 2013 07:26:19 GMT Sisällön pituus: 139672 <! DOCTYPE html> <html> [...snip...] </html>Viimeisen rivin jälkeen SuperUser-palvelin sulkee yhteyden.
Ensimmäinen rivi (
HTTP / 1.1 200 OK) sisältää vastauskoodi , tässä tapauksessa se on200 OK. Se tarkoittaa, että palvelin palauttaa asiakirjan pyydettäessä. Kun palvelin ei onnistu tekemään niin, koodi on jotain muuta: olet todennäköisesti nähnyt404 ei löydettyja403 Ei sallittuon myös melko yleistä. Sitten otsikot seuraavat.Kun selain löytää tyhjän rivin vastauksesta, se tietää, että kaikki rivin ohi on pyytämänsä asiakirjan sisältö. Joten tässä tapauksessa
<! DOCTYPE html>on SuperUserin kotisivukoodin ensimmäinen rivi. Jos pyysin asiakirjan lataamista, siinä olisi todennäköisesti joitain hämmentäviä merkkejä, koska useimpia tiedostomuotoja ei voida lukea ilman edeltävää käsittelyä.Takaisin otsikoihin. Mielenkiintoisin niistä on viimeinen,
Sisällön pituus. Se ilmoittaa selaimelle, kuinka monta tavua tietoja sen pitäisi odottaa tyhjän rivin jälkeen, joten se on periaatteessa tavuina ilmaistu asiakirjan koko. Tämä otsikko ei ole pakollinen, ja palvelin voi jättää sen pois. Joskus asiakirjan kokoa ei voida ennustaa (esimerkiksi kun asiakirja luodaan lennossa), joskus laiskat ohjelmoijat eivät sisälly siihen (melko yleinen ohjainten lataussivustoilla), joskus verkkosivustot luovat aloittelijat, jotka eivät tiedä sellaisen otsikon.Joka tapauksessa, syystä riippumatta, otsikko voi puuttua. Siinä tapauksessa selain ei tiedä kuinka paljon tietoja palvelin aikoo lähettää, ja näyttää siten asiakirjan koon muodossa tuntematon odottaa palvelimen sulkevan yhteyden. Ja tämä on syy tuntemattomille asiakirjakokoille.