Domovská » jak » Proč můj webový prohlížeč někdy nezobrazuje zbývající časy stahování?

    Proč můj webový prohlížeč někdy nezobrazuje zbývající časy stahování?

    Někdy věrný měřič pokroku stahování v prohlížeči (nebo jiné aplikaci) prostě hodí ruce do vzduchu a vzdává zobrazování zbývajícího času stahování. Proč to někdy načte předpokládaný čas stahování a někdy to nehlásí dohromady?

    Dnešní zasedání Otázky a odpovědi nás přichází s laskavým svolením SuperUser - podřízené rozdělení Stack Exchange, které je založeno na komunitě prostřednictvím skupin webových stránek.

    Otázka

    Čtenář SuperUser Coldblackice chce vědět, proč se jeho prohlížeč vždy nepořádá špína:

    Příležitostně při stahování souboru do webového prohlížeče průběh stahování nezná "celkovou velikost souboru nebo jeho délku - stačí zobrazit rychlost stahování s celkovým jako "neznámý".

    Proč by prohlížeč nepoznal konečnou velikost některých souborů? Kde získává tato informace v první řadě?

    Kde skutečně?

    Odpovědi

    Příspěvek SuperUser Gronostaj nabízí následující pohled:

    Chcete-li požádat o dokumenty z webových serverů, prohlížeče používají protokol HTTP. Tento název můžete znát z adresního řádku (může to být nyní skryto, ale když kliknete na panel s adresou, zkopírujete adresu URL a vložíte ji do některého textového editoru, uvidíte http: // na začátku). Jedná se o jednoduchý textový protokol a funguje takto:

    Nejprve se váš prohlížeč připojí k serveru a odesílá adresu URL dokumentu, který si přeje stáhnout (webové stránky jsou také dokumenty) a některé podrobnosti o samotném prohlížeči (User-Agent atd.). Například načtení hlavní stránky na webu SuperUser, http://superuser.com/, můj prohlížeč pošle požadavek, který vypadá takto:

    GET / HTTP / 1.1 Host: superuser.com Připojení: keep-alive Přijmout: text / html, application / xhtml + xml, application / xml; Windows NT 6.1, WOW64) Přijmout kódování: gzip, deflate, sdch Přijmout jazyk: pl-PL, pl; q = 0.8, : 1 If-Modified-Od: Tue, 09 Jul 2013 07:14:17 GMT 

    První řádek určuje, který dokument má server vrátit. Ostatní řádky se nazývají hlavičky; vypadají takto:

    Název záhlaví: Hodnota záhlaví 

    Tyto řádky zasílají další informace, které pomáhají serveru rozhodnout, co má dělat.

    Pokud je vše v pořádku, server bude reagovat odesláním požadovaného dokumentu. Odpověď se spustí se zprávou o stavu, následovanou několika záhlavími (s podrobnostmi o dokumentu) a nakonec, pokud je vše v pořádku, obsah dokumentu. To odpovídá odpovědi serveru SuperUser na můj požadavek:

    HTTP / 1.1 200 OK Cache-Control: public, max-age = 60 Typ obsahu: text / html; charset = utf-8 Vyprší: Út, 09 Jul 2013 07:27:20 GMT Poslední změna: Út, 09 Jul 2013 07:26:20 GMT Vary: * X-Frame-Options: SAMEORIGIN Datum: 07:26:19 GMT Obsah-Délka: 139672 [... snip ...]  

    Po posledním řádku server SuperUser ukončí připojení.

    První řádek (HTTP / 1.1 200 OK) obsahuje kód odpovědi, v tomto případě je to 200 OK. To znamená, že server vrátí požadovaný dokument. Pokud se to server nepodaří, kód bude něco jiného: pravděpodobně jste to viděli 404 nenalezeno, a 403 Přístup odepřen je docela běžné. Poté následují hlavičky.

    Když prohlížeč v odpovědi nalezne prázdný řádek, ví, že všechno kolem tohoto řádku je obsahem požadovaného dokumentu. Takže v tomto případě  je první řádek kódu domovské stránky SuperUseru. Pokud jsem požádal o stažení dokumentu, pravděpodobně by to byly nějaké bláznivé znaky, protože většina formátů dokumentů je nečitelná bez předchozího zpracování.

    Zpět na záhlaví. Nejzajímavější pro nás je poslední, Obsah-délka. Informuje prohlížeč, kolik bajtů dat by mělo očekávat po prázdné lince, takže v podstatě je to velikost dokumentu vyjádřená v bajtech. Tato záhlaví není povinná a může být vynechána serverem. Někdy se velikost dokumentu nedá předvídat (např. Když je dokument generován za běhu), někdy i líní programátoři jej nezahrnují (poměrně časté na stránkách pro stahování ovladačů), někdy jsou webové stránky vytvořeny nováčci, kteří nevědí takového záhlaví.

    Každopádně, ať už je důvod bez ohledu na to, může být chybějící hlavička. V takovém případě prohlížeč neví, kolik dat bude server odesílat, a proto zobrazí velikost dokumentu jako neznámý, čeká na server k ukončení připojení. A to je důvod neznámé velikosti dokumentů.


    Musíte něco přidat k vysvětlení? Vypadněte v komentářích. Chcete se dozvědět více odpovědí od ostatních uživatelů technologie Stack Exchange? Podívejte se na celý diskusní příspěvek zde.