14Sep

Miksi Web-selain joskus ei näytä jäljellä olevia latausaikoja?

Joskus selaimesi( tai muu sovellus) uskollinen latausmittari menee vain käsiinsä ilmaan ja luovuttaa jäljellä olevan latausaikan näyttämisen. Miksi se joskus naulaa ennustettu latausaika ja joskus se ei kerro siitä kaikesta yhdessä?

Päivän kysymys &Vastausistunto tulee meille kohteliaasti SuperUser-osastoon Stack Exchange, yhteisöllinen ryhmittely Q & A verkkosivuilla.

Kysymys

SuperUser-lukija Coldblackice haluaa tietää, miksi selaimesi ei aina syö likaa:

Jos lataat tiedostoa verkkoselaimessa, latauksen eteneminen ei "tiedä" tiedoston kokoa, taikuinka pitkälle latauksessa se on - se näyttää vain nopeuden, jolla se lataa, yhteensä kuin "tuntematon".

Miksi selaimella ei tiedä joidenkin tiedostojen lopullista kokoa? Mistä se saa nämä tiedot ensiksi?

Missä todella?

Vastaukset

SuperUser-avustaja Gronostaj tarjoaa seuraavanlaisen näkemyksen:

Web-palvelimien asiakirjojen pyytämiseksi selaimet käyttävät HTTP-protokollaa. Voit tunnistaa kyseisen nimen osoitekenttään( se voi olla piilotettu nyt, mutta kun napsautat osoitekenttää, kopioi URL ja liitä se johonkin tekstieditoriksi, näet http: // alussa).Se on yksinkertainen tekstipohjainen protokolla ja se toimii näin:

Ensinnäkin selaimesi muodostaa yhteyden verkkosivuston palvelimelle ja lähettää dokumentin URL-osoitteen, jonka se haluaa ladata( myös verkkosivut ovat asiakirjoja) ja joitain yksityiskohtia itse selaimesta( Käyttäjäagentti jne.).Esimerkiksi pääkäyttäjän lataaminen SuperUser-sivustossa, http: //superuser.com/, selaimeni lähettää kyselyn, joka näyttää tältä:

GET / HTTP / 1.1 Host: superuser.com Liitäntä: keep-alive Hyväksy: teksti / html, sovellus/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Käyttäjäagentti: Mozilla / 5.0( Windows NT 6.1; WOW64) Hyväksy-koodaus: gzip, deflate, sdch Hyväksy-kieli: pl-PL, Q = 0.4, e = 0.4, e = 0.4, e = 0.4, e = 0.4, E =line määrittää, mitä dokumenttia palvelin palaa. Muita viivoja kutsutaan otsikoiksi;ne näyttävät tältä: Header name: Header value

Nämä rivit lähettävät lisätietoja, joiden avulla palvelin päättää, mitä tehdä.

Jos kaikki on hyvin, palvelin vastaa lähettämällä pyydetyt asiakirjat. Vastaus alkaa tilaviestillä, jota seuraa joitain otsikoita( asiakirjan yksityiskohtia) ja lopuksi, jos kaikki on hyvin, asiakirjan sisältö.Tämä on se, mitä SuperUser-palvelimen vastaus pyynnöstäsi näyttää:

HTTP / 1.1 200 OK Välimuistin hallinta: julkinen, max-age = 60 Sisältötyyppi: text / html;charset = utf-8 Expires: Tue, 09 Jul 2013 07:27:20 GMT Viimeksi muokattu: Ti, 09 Jul 2013 07:26:20 GMT Vary: * X-Frame-vaihtoehdot: SAMEORIGIN Päivämäärä: ti, 09 heinä 201307:26:19 GMT Sisältö-pituus: 139672 & lt;! DOCTYPE html & gt;& Lt; html & gt;[... snip. ..] & lt; / html & gt;

Viimeisen rivin jälkeen SuperUserin palvelin sulkee yhteyden.

Ensimmäinen rivi( HTTP / 1.1 200 OK) sisältää vastauskoodin, tässä tapauksessa 200 OK.Tämä tarkoittaa, että palvelin palauttaa asiakirjan pyydettäessä.Kun palvelin ei onnistu tekemään niin, koodi on jotain muuta: olet todennäköisesti nähnyt 404 Ei löydy ja 403 Kielletty on melko yleinen. Sitten otsikot seuraavat.

Kun selain löytää vasemman rivin tyhjän rivin, se tietää, että kaikki kyseisen rivin vieressä on pyydetyn asiakirjan sisältö.Tässä tapauksessa & lt;! DOCTYPE html & gt;on SuperUserin etusivun koodin ensimmäinen rivi. Jos olin pyytämässä asiakirjaa ladattavaksi, se olisi luultavasti joitain hämmentyviä merkkejä, koska useimmat asiakirjamuodot ovat lukemattomia ilman edeltävää käsittelyä.

Takaisin otsikoihin. Mielenkiintoisin meille on viimeinen, Content-Length. Se kertoo selaimelle, kuinka monta tavua dataa se odottaa tyhjän rivin jälkeen, joten pohjimmiltaan se on asiakirjojen koko, joka ilmaistaan ​​tavuina. Tämä otsikko ei ole pakollinen, ja palvelin voi jättää sen pois. Joskus asiakirjan kokoa ei voida ennustaa( esimerkiksi silloin, kun asiakirja on luotu lennossa), joskus laiska ohjelmoijat eivät sisälly siihen( melko yleisiä kuljettajan latauskohteissa), joskus verkkosivustot luo aloittelijoille, jotka eivät tiedätällaisesta otsakkeesta.

Joka tapauksessa syystä johtuen otsikko voi olla kadonnut. Tällöin selaimessa ei tiedetä, kuinka paljon palvelimelta lähetettäviä tietoja näytetään, joten asiakirjan koko tuntematon odottaa palvelinta sulkevan yhteyden. Ja tämä on syy tuntemattomille asiakirjakoille.

Onko sinulla jotain lisättävä selitykseen? Kuulkaa kommentit. Haluatko lukea lisää vastauksia muilta tech-tajuilta Stack Exchange-käyttäjiltä?Katso koko keskusteluketju täältä.