14Sep

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

click fraud protection

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

dnešní otázka &Odpověď na zasedání se k nám dostala s laskavým svolením SuperUser - podřízenou výměnou Stack Exchange, skupině webů Q & A založených na komunitě.

Otázka

čtečka SuperUser Coldblackice chce vědět, proč jeho prohlížeč není vždy špinavý nečistoty:

Občas při stahování souboru ve webovém prohlížeči, stahování nedokáže "vědět" o celkové velikosti souboru, nebojak daleko ve stahování to je - to jen ukazuje rychlost, s jakou je stahování, s celkem 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ě?

Asistent odpovědí

SuperUser Gronostaj nabízí následující informace:

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 být nyní skryt, ale když kliknete na panel s adresou, zkopírujete adresu URL a vložíte ji do některého textového editoru, uvidíte na začátku http: //).Jedná se o jednoduchý textový protokol a funguje takto:

instagram viewer

Nejprve se váš prohlížeč připojí k serveru a odesílá adresu URL dokumentu, který chce stáhnout( také webové stránky jsou dokumenty) a některé podrobnosti o samotném prohlížeči( Uživatel-Agent atd.).Například pro 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, aplikace/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, q = 0,8, en-US, q = 0,6, en; q = 0,4 Cookie: [odstraněno z důvodu bezpečnosti] DNT: 1 If-Modified-Tue, 09 Jul 2013 07:14:17 GMT

line 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 odesí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. Odpověď serveru SuperUser vypadá takto:

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: Tue, 09 Jul 2013 07:26:20 GMT Vary: * X-Frame-Options: SAMEORIGIN Datum:07:26:19 GMT Content-Length: 139672 & lt;! DOCTYPE html & gt;& lt; html & gt;[... snip. ..] & lt; / html & gt;

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 200 OK.To znamená, že server vrátí požadovaný dokument. Pokud server nedokáže tak učinit, kód bude něco jiného: asi jste viděli 404 Nenalezeno a 403 Zakázáno je také docela obvyklé.Pak 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ě & lt;! DOCTYPE html & gt;je první řádek kódu domovské stránky SuperUser. 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 bez předchozího zpracování nečitelná.

Zpět na záhlaví.Nejzajímavější pro nás je poslední, Content-Length. 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 nemůže předvídat( například 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ť je jakýkoliv důvod, hlavička může chybět. V takovém případě prohlížeč neví, kolik dat bude server odesílat, a proto zobrazí velikost dokumentu neznámé a čeká na ukončení připojení serveru. 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.