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

Sisällysluettelo:

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

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

Video: Miksi Web-selain joskus ei näytä jäljellä olevia latausaikoja?
Video: 30 Ultimate Outlook Tips and Tricks for 2020 - YouTube 2024, Huhtikuu
Anonim
Joskus selaimesi (tai muu sovellus) uskollinen latausmittari vain heittää käsiään ilmalle ja luopuu jäljellä olevan latausaikan näyttämisestä. Miksi se joskus naulaa ennustettu latausaika ja joskus se ei kerro siitä kaikesta yhdessä?
Joskus selaimesi (tai muu sovellus) uskollinen latausmittari vain heittää käsiään ilmalle ja luopuu jäljellä olevan latausaikan näyttämisestä. Miksi se joskus naulaa ennustettu latausaika ja joskus se ei kerro siitä kaikesta yhdessä?

Tämän päivän kysymys- ja vastausistunto tulee meihin SuperUserin hyväksi - Stack Exchangein alaosasto, joka on yhteisöllinen Q & A-sivustojen ryhmittely.

Kysymys

SuperUser-lukija Coldblackice haluaa tietää, miksi hänen selaimessaan ei aina laita likaa:

Occasionally, when downloading a file in a web browser, the download progress doesn’t “know” the total size of the file, or how far along in the download it is - it just shows the speed at which it’s downloading, with a total as “Unknown”.

Why wouldn’t the browser know the final size of some files? Where does it get this information in the first place?

Missä todella?

Vastaukset

SuperUser-avustaja Gronostaj tarjoaa seuraavanlaisen näkemyksen:

To request documents from web servers, browsers use the HTTP protocol. You may know that name from your address bar (it may be hidden now, but when you click the address bar, copy the URL and paste it in some text editor, you’ll see

https://

alussa). Se on yksinkertainen tekstipohjainen protokolla ja se toimii näin:

Ensinnäkin selaimesi muodostaa yhteyden verkkosivuston palvelimelle ja lähettää sen URL-osoitteen, jota se haluaa ladata (www-sivut ovat myös asiakirjoja) ja joitain yksityiskohtia selaimesta (käyttäjä-agentti jne.). Jos haluat esimerkiksi ladata pääsivun SuperUser-sivustossa,

https://superuser.com/

selaimeni lähettää pyynnön, joka näyttää tältä:

GET / HTTP/1.1 Host: superuser.com Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) Accept-Encoding: gzip,deflate,sdch Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: [removed for security] DNT: 1 If-Modified-Since: Tue, 09 Jul 2013 07:14:17 GMT

Ensimmäinen rivi määrittää, mitä dokumenttia palvelin palaa. Muita viivoja kutsutaan otsikoiksi; ne näyttävät tästä:

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 Cache-Control: public, max-age=60 Content-Type: text/html; charset=utf-8 Expires: Tue, 09 Jul 2013 07:27:20 GMT Last-Modified: Tue, 09 Jul 2013 07:26:20 GMT Vary: * X-Frame-Options: SAMEORIGIN Date: Tue, 09 Jul 2013 07:26:19 GMT Content-Length: 139672 […snip…]

Viimeisen rivin jälkeen SuperUserin palvelin sulkee yhteyden.

Ensimmäinen rivi (

HTTP/1.1 200 OK

) sisältää vastauskoodin, tässä tapauksessa se on

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 Not Found

ja

403 Forbidden

on melko yleistä. Sitten otsikot seuraavat.

Kun selain löytää vasemman rivin tyhjän rivin, se tietää, että kaikki kyseisen rivin vieressä on pyydetyn asiakirjan sisältö. Joten tässä tapauksessa

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 tietoja palvelin aikoo lähettää, ja näin näyttää asiakirjan koontuntematon, odottaa palvelinta sulkemaan yhteyden. Ja tämä on syy tuntemattomille asiakirjakoille.

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

Suositeltava: