Homepage » hogyan kell » Miért nem sikerül a webböngészője megjeleníteni a hátralévő letöltési időket?

    Miért nem sikerül a webböngészője megjeleníteni a hátralévő letöltési időket?

    Néha a böngészőben (vagy más alkalmazásban) a hűséges letöltési folyamatmérő csak a levegőbe dobja a kezét, és lemond a hátralévő letöltési idő megjelenítéséről. Miért fordul elő néha a tervezett letöltési idő, és néha együttesen nem jelent meg?

    A mai Kérdések és válaszok munkamenet a Jóvagyon - a Stack Exchange alosztályának, a közösség által vezérelt Q&A webhelyek csoportjának köszönhetően..

    A kérdés

    A SuperUser olvasó Coldblackice azt akarja tudni, hogy a böngészője miért nem takarja el a szennyeződést:

    Időnként, amikor letölti a fájlt egy webböngészőben, a letöltési folyamat „nem tudja” a fájl teljes méretét, vagy mennyire messze van a letöltés során - csak azt mutatja, hogy milyen sebességgel tölti le a letöltést. mint „Ismeretlen”.

    Miért nem ismeri a böngésző néhány fájl végső méretét? Hol kapja meg először ezt az információt?

    Valóban?

    A válaszok

    A Gronostaj SuperUser közreműködője a következő betekintést nyújtja:

    A webkiszolgálóktól származó dokumentumok kéréséhez a böngészők a HTTP protokollt használják. Lehet, hogy ismeri ezt a nevet a címsorából (lehet, hogy most elrejtve van, de ha rákattint a címsorra, másolja az URL-t, és illessze be egy szövegszerkesztőbe, http: // az elején). Ez egy egyszerű szövegalapú protokoll, és így működik:

    Először is, a böngészője csatlakozik a webhely szerveréhez, és elküldi a letölteni kívánt dokumentum URL-jét (weblapok is dokumentumok) és néhány részletet a böngészőről (User-Agent stb.). Például a főoldal betöltéséhez a SuperUser oldalon, http://superuser.com/, böngészőm egy ilyen kérést küld:

    GET / HTTP / 1.1 Host: superuser.com Kapcsolat: keep-alive Elfogad: text / 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 Accept-Language: pl-PL, pl; q = 0,8, en-US; q = 0,6, en; q = 0.4 Cookie: [eltávolítva a biztonsághoz] DNT : 1 Ha módosított-tól: Tue, 2013. július 9. 07:14:17 GMT 

    Az első sor azt adja meg, hogy a szervernek milyen dokumentumot kell visszaadnia. A többi vonalat fejlécnek nevezik; így néz ki:

    Fejléc neve: Fejléc érték 

    Ezek a sorok további információkat küldnek, amelyek segítenek a szervernek, hogy mit tegyenek.

    Ha minden rendben van, a kiszolgáló a kért dokumentum elküldésével válaszol. A válasz egy állapotüzenettel kezdődik, amelyet néhány fejléc követ (a dokumentum részleteit), és végül, ha minden rendben van, a dokumentum tartalma. Ez az, amit a SuperUser szerver kérésemre adott válasza szerint néz ki:

    HTTP / 1.1 200 OK Gyorsítótár-vezérlés: nyilvános, max. Életkor = 60 Tartalom-típus: text / html; charset = utf-8 Lejárat: Tue, 09 Jul 2013 07:27:20 GMT Utoljára módosítva: 2013. július 09. 07:26:20 GMT Vary: * X-Frame-Opciók: SAMEORIGIN Dátum: 2013. július 09. 07:26:19 GMT Tartalom-hossza: 139672 [… snip…]  

    Az utolsó sor után a SuperUserver lezárja a kapcsolatot.

    Az első sor (HTTP / 1.1 200 OK) tartalmazza a válaszkódot, ebben az esetben ez 200 OK. Ez azt jelenti, hogy a szerver visszaadja a dokumentumot a kért módon. Ha a szerver nem sikerül, akkor a kód valami más lesz: valószínűleg láttad 404 nem található, és 403 letiltva nagyon gyakori is. Ezután a fejlécek követik.

    Amikor a böngésző egy üres sort talál a válaszban, tudja, hogy mindent, ami ezen a soron túl van, a kért dokumentum tartalma. Tehát ebben az esetben  a SuperUser honlapjának első sora. Ha egy dokumentumot kérek letöltésre, valószínűleg néhány karakteres karakter lenne, mert a legtöbb dokumentumformátum előzetes feldolgozás nélkül olvashatatlan..

    Vissza a fejlécekhez. Számunkra a legérdekesebb az utolsó, Content-Length. Ez tájékoztatja a böngészőt arról, hogy hány bájtnyi adatot kell várnia az üres sor után, tehát alapvetően ez a dokumentum mérete bájtban kifejezve. Ez a fejléc nem kötelező, és a szerver kihagyhatja. Néha nem lehet előre megjósolni a dokumentum méretét (például amikor a dokumentumot repülés közben generálják), néha a lusta programozók nem tartalmazzák ezt (elég gyakori a járművezetők letöltési webhelyein), néha a webhelyeket az újoncok hozzák létre, akik nem tudják ilyen fejléc.

    Akárhogy is, az okból is hiányzik a fejléc. Ebben az esetben a böngésző nem tudja, hogy mennyi adatot fog küldeni a szerver, és így megjeleníti a dokumentum méretét ismeretlen, a szerver bezárja a kapcsolatot. És ez az oka az ismeretlen dokumentumméreteknek.


    Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.