14Sep
Niekedy verný meter na stiahnutie prehliadača vo vašom prehliadači( alebo inej aplikácii) práve hodí ruky do vzduchu a vzdáva zobrazenia zostávajúceho času na sťahovanie. Prečo niekedy niekedy načúva predpokladaný čas na sťahovanie a niekedy sa to nepodarí oznámiť všetko dohromady?
dnešná otázka &Odpoveď na zasadnutie nám príde s láskavým dovolením SuperUser - subdivíziu Stack Exchange, komunitne riadeného zoskupenia webových stránok Q & A.
Otázka
čítačka SuperUser Coldblackice chce vedieť, prečo jeho prehliadač nie vždy misku špinu:
Príležitostne, pri sťahovaní súboru vo webovom prehliadači, postup pri sťahovaní nevie "celú veľkosť súboru, aleboako ďaleko v preberaní to je - to len ukazuje rýchlosť, s ktorou sa sťahuje, s celkom ako "Neznámy".
Prečo by prehliadač nepoznal konečnú veľkosť niektorých súborov? Kde získava tieto informácie na prvom mieste?
Kde skutočne?
Príspevok
prispievateľ SuperUser Gronostaj ponúka tento pohľad:
Ak chcete požiadať o dokumenty z webových serverov, prehliadače používajú protokol HTTP.Tento názov môžete zadať z panela s adresou( môže to byť teraz skryté, ale keď kliknete na panel s adresou, skopírujte adresu URL a prilepte ho do niektorého textového editora, na začiatku uvidíte http: //).Jedná sa o jednoduchý textový protokol a funguje takto:
Najskôr sa váš prehliadač pripája na server webových stránok a odošle adresu URL dokumentu, ktorý chce stiahnuť( webové stránky sú aj dokumenty) a niektoré podrobnosti o samotnom prehliadači( User-agent atď.).Napríklad na načítanie hlavnej stránky na serveri SuperUser, http: //superuser.com/, môj prehliadač pošle požiadavku, ktorá vyzerá takto:
GET / HTTP / 1.1 Host: superuser.com Pripojenie: Keep-alive Prijmite: text / html, aplikácia/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: [odstránené z dôvodu bezpečnosti] DNT: 1 If-Modified-Since:riadok určuje, ktorý dokument má server vrátiť.Ostatné riadky sa nazývajú hlavičky;vyzerajú takto: Názov nadpisu: Hodnota hlavičkyTieto riadky posielajú ďalšie informácie, ktoré pomáhajú rozhodnúť, čo má robiť.
Ak je všetko v poriadku, server odpovie zaslaním požadovaného dokumentu. Odpoveď začína hlásením o stave, nasleduje niekoľko hlavičiek( s podrobnosťami o dokumente) a nakoniec, ak je všetko v poriadku, obsah dokumentu. Toto je odpoveď servera SuperUser na moju požiadavku:
HTTP / 1.1 200 OK Cache-Control: public, max-age = 60 Content-type: text / html;charset = utf-8 Platnosť: Tue, 09 Jul 2013 07:27:20 GMT Posledná zmena: Tue, 09 Jul 2013 07:26:20 GMT Vary: * X-Frame-Options: SAMEORIGIN Dátum:07:26:19 GMT Content-Length: 139672 & lt;! DOCTYPE html & gt;& Lt; HTML & gt;[... snip. ..] & lt; / html & gt;Po poslednom riadku server SuperUser ukončí spojenie.
Prvý riadok( HTTP / 1.1 200 OK) obsahuje kód odpovede, v tomto prípade je 200 OK.To znamená, že server vráti požadovaný dokument. Ak sa serverovi to nepodarí, kód bude niečo iné: pravdepodobne ste videli 404 nenájdené a 403 Zakázané je taktiež bežné.Potom nasledujú hlavičky.
Keď prehliadač nájde v odpovedi prázdny riadok, vie, že všetko okolo tohto riadku je obsahom požadovaného dokumentu. Takže v tomto prípade & lt;! DOCTYPE html & gt;je prvý riadok kódu domovskej stránky SuperUser. Ak by som žiadal o stiahnutie dokumentu, pravdepodobne by to boli nejaké bláznivé znaky, pretože väčšina formátov dokumentov je bez predchádzajúceho spracovania nečitateľná.
Späť na záhlavie. Najzaujímavejšia pre nás je posledná, Content-Length. Informuje prehliadač, koľko bajtov údajov by malo očakávať po prázdnom riadku, takže v podstate je to veľkosť dokumentu vyjadrená v bajtoch. Táto hlavička nie je povinná a server ju môže vynechať.Niekedy sa veľkosť dokumentu nedá predvídať( napríklad keď sa dokument generuje v pohybe), niekedy leniví programátori ho nezahŕňajú( dosť časté na stránkach sťahovania ovládačov), niekedy sú webové stránky vytvorené nováčikmi, ktorí nevediatakej hlavičky.
Každopádne, nech je akýkoľvek dôvod, hlavička môže chýbať.V takom prípade prehliadač nevie, koľko údajov bude server posielať, a tak zobrazí veľkosť dokumentu ako neznáme a čaká na ukončenie pripojenia servera. A to je dôvod pre neznáme veľkosti dokumentov.
Musíte niečo doplniť k vysvetleniu? Zvuk vypnúť v komentároch. Chcete si prečítať viac odpovedí od iných používateľov technológie Stack Exchange? Pozrite sa na celý diskusný príspevok tu.