Előfordul, hogy a böngészőjében (vagy más alkalmazásban) a hűséges letöltési folyamatmérő csak a levegőbe dobja a kezét, és feladja a hátralévő letöltési idő megjelenítését. Miért szegezi néha a tervezett letöltési időt, és néha elmulasztja az egészet együtt jelenteni?
A mai Kérdések és válaszok ülés a SuperUser jóvoltából érkezik hozzánk - a Stack Exchange alosztályához, amely a Q & A webhelyek közösségvezérelt csoportosulása.
A kérdés
A Coldblackice SuperUser olvasó tudni akarja, miért nem mindig böngészője szennyezi a szennyeződéseket:
Esetenként, amikor egy fájlt letölt egy webböngészőből, a letöltés előrehaladása nem „ismeri” a fájl teljes méretét, vagy azt, hogy a letöltés milyen messze van - csak a letöltés sebességét mutatja, összesen mint „Ismeretlen”.
Miért ne tudná a böngésző egyes fájlok végleges méretét? Honnan szerzi ezeket az információkat egyáltalán?
Valóban?
A válaszok
A SuperUser közreműködője, Gronostaj a következő betekintést nyújtja:
A dokumentumok webszerverekről történő kéréséhez a böngészők a HTTP protokollt használják. Lehet, hogy ismeri ezt a nevet a címsávból (lehet, hogy most el van rejtve, de amikor rákattint a címsávra, másolja az URL-t és illessze be egy szövegszerkesztőbe, látni fogja
http: //az elején). Ez egy egyszerű szöveges protokoll, és így működik:Először is, a böngésző csatlakozik a webhely szerveréhez, és elküldi a letölteni kívánt dokumentum URL-jét (a weboldalak is dokumentumok), valamint néhány részletet magáról a böngészőről ( User-Agent stb). Például a főoldal betöltéséhez a SuperUser webhelyre,
http://superuser.com/, a böngészőm egy ilyen kérést küld:GET / HTTP / 1.1 Gazdagép: superuser.com Kapcsolat: életben maradni Elfogadás: szöveg / html, alkalmazás / xhtml + xml, alkalmazás / xml; q = 0,9, * / *; q = 0,8 Felhasználó-ügynök: Mozilla / 5.0 (Windows NT 6.1; WOW64) Elfogadás-kódolás: gzip, deflate, sdch Elfogadási nyelv: pl-PL, pl; q = 0,8, en-USA; q = 0,6, en; q = 0,4 Cookie: [removed for security] DNT: 1 If-Modified-Since: kedd, 2013. július 9., 07:14:17 GMTAz első sor meghatározza, hogy a szerver mely dokumentumot adja vissza. A többi sort fejlécnek nevezzük; így néznek ki:
Fejléc neve: Fejléc értékeEzek a sorok további információkat küldenek, amelyek segítenek a szervernek eldönteni, hogy mit tegyen.
Ha minden rendben van, akkor a szerver a kért dokumentum elküldésével válaszol. A válasz egy állapotüzenettel indul, amelyet néhány fejléc követ (a dokumentum részleteivel), végül, ha minden rendben van, akkor a dokumentum tartalma. Így néz ki a SuperUser szerver válasza a kérésemre:
HTTP / 1.1 200 OK Gyorsítótár-vezérlés: nyilvános, max. Életkor = 60 Tartalom-típus: text / html; karakterkészlet = utf-8 Lejár: 2013. július 9., kedd, 07:27:20 GMT Utoljára módosítva: 2013. július 9., kedd, 07:26:20 GMT Vary: * X-Frame-Options: SAMEORIGIN Dátum: kedd, 2013. július 9., 07:26:19 GMT Tartalom-hossz: 139672 <! DOCTYPE html> <html> [...snip...] </html>Az utolsó sor után a SuperUser szervere lezárja a kapcsolatot.
Az első sor (
HTTP / 1.1 200 OK) tartalmazza a válaszkód , ebben az esetben az200 OK. Ez azt jelenti, hogy a szerver kérésre visszaküldi a dokumentumot. Ha a szervernek nem sikerül, a kód valami más lesz: valószínűleg látta404 nem található, és403 letiltvameglehetősen gyakori is. Aztán a fejlécek következnek.Amikor a böngésző üres sort talál a válaszban, tudja, hogy a soron túl minden a kért dokumentum tartalma. Tehát ebben az esetben
<! DOCTYPE html>a SuperUser honlapjának első sora. Ha egy dokumentum letöltését kértem, akkor valószínűleg néhány fecsegő karakter lenne, mert a legtöbb dokumentumformátum előzetes feldolgozás nélkül olvashatatlan.Vissza a fejlécekhez. A legérdekesebb számunkra az utolsó,
Tartalom-hossz. Tájékoztatja a böngészőt, hogy az üres sor után hány bájtnyi adatra kell számítania, tehát alapvetően a bájtban kifejezett dokumentumméret. Ez a fejléc nem kötelező, ezért a szerver kihagyhatja. Néha a dokumentum méretét nem lehet megjósolni (például amikor a dokumentumot menet közben hozzák létre), néha a lusta programozók nem tartalmazzák (meglehetősen gyakori az illesztőprogram-letöltési webhelyeken), néha a weboldalakat olyan újoncok készítik, akik nem tudják ilyen fejléc.Mindegy, bármi is az oka, a fejléc hiányozhat. Ebben az esetben a böngésző nem tudja, hogy a szerver mennyi adatot fog küldeni, és így a dokumentum méretét jeleníti meg ismeretlen , várva a kiszolgálót a kapcsolat bezárásával. És ez az oka az ismeretlen dokumentumméreteknek.