Miksi Web-selaimeni joskus ei näytä jäljellä olevia latausaikoja?
Joskus selaimesi (tai muun sovelluksen) uskollinen latausmittari vain heittää kätensä ilmaan ja luopuu jäljellä olevan latausajan näyttämisestä. Miksi se joskus naulaa ennustetun latausajan ja joskus ei raportoi siitä yhdessä?
Nykypäivän Kysymys- ja vastaus -istunto tulee meille suotuisasti SuperUserin - Stack Exchange -alueen, yhteisöpohjaisen Q & A-sivustojen ryhmittymän - kautta..
Kysymys
SuperUser-lukija Coldblackice haluaa tietää, miksi hänen selaimensa ei aina laita likaa:
Jos lataat tiedoston Web-selaimessa, lataustapahtuma ei toisinaan tiedä tiedoston kokoa tai sitä, kuinka paljon se on ladattavassa latauksessa - se näyttää vain sen latausnopeuden, jolla on yhteensä kuten "Tuntematon".
Miksi selain ei tiedä joidenkin tiedostojen lopullista kokoa? Mistä se saa nämä tiedot ensiksi?
Missä todella?
Vastaukset
SuperUserin avustaja Gronostaj tarjoaa seuraavan käsityksen:
Jos haluat pyytää asiakirjoja web-palvelimilta, selaimet käyttävät HTTP-protokollaa. Saatat tietää, että nimi on 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ää sen asiakirjan URL-osoitteen, jonka se haluaa ladata (web-sivut ovat myös asiakirjoja) ja joitakin tietoja itse selaimesta (User-Agent jne.). Esimerkiksi SuperUser-sivuston pääsivun lataaminen,
http://superuser.com/
, selaimeni lähettää pyynnön, joka näyttää tältä:GET / HTTP / 1.1 Isäntä: superuser.com Yhteys: keep-alive Hyväksy: text / html, application / xhtml + xml, application / xml, q = 0,9, * / *; q = 0,8 User-Agent: Mozilla / 5.0 ( Windows NT 6.1, WOW64) Hyväksy-koodaus: gzip, deflate, sdch Accept-Language: pl-PL, pl; q = 0,8, en-US; q = 0,6, en; q = 0.4 eväste: [poistettu tietoturvaan] DNT : 1 Jos muutettu-vuodesta: ti, 09 heinäkuu 2013 07:14:17 GMT
Ensimmäisessä rivissä määritetään, mitä asiakirjaa palvelimen pitäisi palauttaa. Muita rivejä kutsutaan otsikoiksi; ne näyttävät tältä:
Otsikon nimi: Otsikon arvo
Nä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 seuraa jotkin otsikot (asiakirjan yksityiskohdat) ja lopuksi, jos kaikki on hyvin, asiakirjan sisältö. Tätä näyttää SuperUser-palvelimen vastaus pyyntöönni seuraavasti:
HTTP / 1.1 200 OK Välimuisti-ohjaus: julkinen, maksimi-ikä = 60 Sisältö-tyyppi: text / html; charset = utf-8 Vanhentuu: ti, 09 heinäkuu 2013 07:27:20 GMT Viimeksi muutettu: ti, 09 heinäkuu 2013 07:26:20 GMT Vary: * X-Frame-asetukset: SAMEORIGIN Päivämäärä: ti, 09 heinäkuu 2013 07:26:19 GMT Sisältöpituus: 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 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öydetty
, ja403 Ei sallittu
on melko yleistä. Sitten otsikot seuraavat.Kun selain löytää vastauksen tyhjän rivin, se tietää, että kaikki sen rivin ohi on sen pyytämän asiakirjan sisältö. Joten tässä tapauksessa
on SuperUserin kotisivun koodin ensimmäinen rivi. Jos pyytäisin ladattavaa asiakirjaa, se olisi luultavasti muutama merkki, koska useimmat asiakirjan muodot eivät ole lukukelpoisia ilman etukäteiskäsittelyä.
Takaisin otsikoihin. Mielenkiintoisin meille on viimeinen,
Content-Length
. Se ilmoittaa selaimelle, kuinka monta tavua dataa sen pitäisi odottaa tyhjän rivin jälkeen, joten periaatteessa se on asiakirjan koko, joka ilmaistaan tavuina. Tämä otsikko ei ole pakollinen ja palvelin voi jättää sen pois. Joskus asiakirjan kokoa ei voida ennustaa (esim. Kun asiakirja luodaan lennossa), joskus laiska ohjelmoijat eivät sisällä sitä (melko yleinen kuljettajan lataussivustoilla), joskus sivustot luovat aloittelijoille, jotka eivät tiedä tällaisen otsikon.Joka tapauksessa, mikä tahansa syy on, otsikko voi puuttua. Tällöin selain ei tiedä, kuinka paljon tietoja palvelin lähettää ja näyttää siten asiakirjan koon tuntematon, odottaa, että palvelin sulkee yhteyden. Ja se on syy tuntemattomien asiakirjojen kokoihin.
Onko jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta tech-savvy Stack Exchange -käyttäjiltä? Tutustu koko keskusteluketjuun täällä.