Miksi verkkoselaimeni ei toisinaan näytä jäljellä olevia latausaikoja?

miksi-web-selaimeni-joskus-epäonnistui-näyttö-jäljellä-latausajat kuva 1

Joskus selaimesi (tai muun sovelluksen) uskollinen latausten edistymismittari vain nostaa kätensä ilmaan ja luopuu jäljellä olevan latausajan näyttämisestä. Miksi se toisinaan naulaa ennustetun latausajan ja toisinaan epäonnistuu raportoimaan kaikkea yhdessä?

Tämän päivän Question & Answer -istunto saapuu meille SuperUserin, Stack Exchangen, yhteisövetoisen Q&A-verkkosivustojen ryhmän, ansiosta.



Kysymys

SuperUser-lukija Coldblackice haluaa tietää, miksi hänen selaimensa ei aina poista likaa:

Joskus, kun lataat tiedostoa verkkoselaimella, latauksen edistyminen ei tiedä tiedoston kokonaiskokoa tai kuinka pitkällä se on latauksessa – se näyttää vain latausnopeuden, jonka kokonaismäärä on Tuntematon. .

Miksi selain ei tietäisi joidenkin tiedostojen lopullista kokoa? Mistä se saa tämän tiedon alun perin?

Missä tosiaan?

Vastaukset

SuperUser-avustaja Gronostaj tarjoaa seuraavan käsityksen:

Asiakirjojen pyytämiseen web-palvelimista selaimet käyttävät HTTP-protokollaa. Saatat tietää nimen osoitepalkistasi (se voi olla nyt piilotettu, mutta kun napsautat osoitepalkkia, kopioit URL-osoitteen ja liität sen johonkin tekstieditoriin, näet alussa |_+_|). Se on yksinkertainen tekstipohjainen protokolla ja se toimii seuraavasti:

Ensin selaimesi muodostaa yhteyden verkkosivuston palvelimeen ja lähettää sen asiakirjan URL-osoitteen, jonka se haluaa ladata (verkkosivut ovat myös asiakirjoja) ja joitain tietoja itse selaimesta (User-Agent jne.). Esimerkiksi SuperUser-sivuston pääsivun lataamiseksi |_+_| selaimeni lähettää pyynnön, joka näyttää tältä:

|_+_|

Ensimmäinen rivi määrittää, minkä asiakirjan palvelimen tulee palauttaa. Muita rivejä kutsutaan otsikoiksi; ne näyttävät tältä:

|_+_|

Nämä rivit lähettävät lisätietoja, jotka auttavat palvelinta päättämään, mitä tehdä.

Jos kaikki on hyvin, palvelin vastaa lähettämällä pyydetyn asiakirjan. Vastaus alkaa tilaviestillä, jota seuraa otsikot (jossa on tietoja asiakirjasta) ja lopuksi, jos kaikki on hyvin, asiakirjan sisältö. SuperUser-palvelimen vastaus pyyntööni näyttää tältä:

|_+_|

Viimeisen rivin jälkeen SuperUserin palvelin sulkee yhteyden.

Ensimmäinen rivi (|_+_|) sisältää vastauskoodin, tässä tapauksessa se on |_+_|. Se tarkoittaa, että palvelin palauttaa asiakirjan pyydettäessä. Kun palvelin ei onnistu, koodi on jotain muuta: olet luultavasti nähnyt |_+_| ja |_+_| on aika yleistäkin. Sitten otsikot seuraavat.

Kun selain löytää vastauksesta tyhjän rivin, se tietää, että kaikki tämän rivin jälkeinen on pyytämän asiakirjan sisältö. Joten tässä tapauksessa |_+_| on SuperUserin kotisivukoodin ensimmäinen rivi. Jos pyytäisin asiakirjaa ladattavaksi, se olisi luultavasti hölynpölyä, koska useimpia asiakirjamuotoja ei voi lukea ilman ennakkokäsittelyä.

Takaisin otsikoihin. Meille kiinnostavin on viimeinen, |_+_|. Se ilmoittaa selaimelle kuinka monta tavua dataa sen pitäisi odottaa tyhjän rivin jälkeen, joten periaatteessa se on asiakirjan koko tavuina ilmaistuna. 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 laiskot ohjelmoijat eivät sisällytä sitä (melko yleistä ajurien lataussivustoilla), joskus verkkosivustot ovat aloittelijoiden luomia, jotka eivät tiedä tällaisesta otsikosta.

Joka tapauksessa, oli syy mikä tahansa, otsikko voi puuttua. Siinä tapauksessa selain ei tiedä kuinka paljon dataa palvelin aikoo lähettää ja näyttää siten asiakirjan koon tuntemattomaksi odottaen palvelimen sulkevan yhteyden. Ja tämä on syy tuntemattomiin asiakirjakokoihin.