14Sep
Ponekad vjernik preuzimanje mjerača napretka na vašem pregledniku( ili drugoj aplikaciji) jednostavno baca ruke u zrak i odustaje od prikazivanja preostalog vremena preuzimanja. Zašto ponekad noktira projicirano vrijeme preuzimanja i ponekad ne uspije sve to prijaviti?
Današnje pitanje &Sesija odgovora nam dolazi zahvaljujući SuperUseru - podjele Stack Exchange-a, grupiranjem zajednice Q & A web stranica.
Pitanje
SuperUser čitač Coldblackice želi znati zašto njegov preglednik ne pržuje uvijek prljavštinu:
Povremeno, pri preuzimanju datoteke u web pregledniku, napredak preuzimanja ne "zna" ukupnu veličinu datoteke ilikoliko daleko je u preuzimanju - to samo pokazuje brzinu kojom preuzima, s ukupnom kao "Nepoznato".
Zašto preglednik ne bi znao konačnu veličinu nekih datoteka? Odakle dobivaju ove informacije na prvom mjestu?
Gdje je doista?
Odgovori
SuperUser suradnik Gronostaj nudi sljedeće uvide:
Da biste zatražili dokumente s web poslužitelja, preglednici koriste HTTP protokol. Možda znate taj naziv iz adresne trake( možda je skriveno sada, ali kada kliknete adresnu traku, kopirajte URL i zalijepite ga u neki uređivač teksta, na početku ćete vidjeti http: //).To je jednostavan protokol koji se temelji na tekstu i funkcionira ovako:
Prvo se vaš preglednik povezuje s poslužiteljem web stranice i šalje URL dokumenta koji želi preuzeti( web stranice su i dokumenti) i neke pojedinosti o samom pregledniku( Korisnički agent i sl.).Na primjer, za učitavanje glavne stranice na web mjestu SuperUser, http: //superuser.com/, moj preglednik šalje zahtjev koji izgleda ovako:
GET / HTTP / 1.1 Domaćin: superuser.com Povezanost: zadržati živ Prihvati: tekst / html, aplikacija/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Korisnički agent: Mozilla / 5.0( Windows NT 6.1; WOW64) Prihvaćanje kodiranja: gzip, deflate, sdch Prihvaćanje jezika: pl-PLq = 0,4, k = 0,4 Cookie: [uklonjeno zbog sigurnosti] DNT: 1 Ako-izmijenjeno-od: Tue, 09 Jul 2013 07:14:17 GMTPrvilinija određuje koji dokument poslužitelj treba vratiti. Druge linije nazivaju se zaglavlja;izgleda ovako:
Naziv zaglavlja: Vrijednost zaglavljaOve linije šalju dodatne informacije koje pomažu poslužitelju odlučiti što učiniti.
Ako je sve u redu, poslužitelj će odgovoriti slanjem zatraženog dokumenta. Odgovor započinje s porukom o statusu, nakon čega slijedi nekoliko zaglavlja( s pojedinostima o dokumentu) i konačno, ako je sve u redu, sadržaj dokumenta. Ovako izgleda odgovor SuperUser poslužitelja za moj zahtjev:
HTTP / 1.1 200 OK Cache-Control: javno, max-age = 60 Content-Type: text / html;charset = utf-8 Istječe: Tue, 09 Jul 2013 07:27:20 GMT Zadnja izmjena: Tue, 09 Jul 2013 07:26:20 GMT Vary: * X-Frame-Options: SAMEORIGIN Datum: uto, 09. srpnja 2013.07:26:19 GMT Sadržaj-dužina: 139672 & lt;! DOCTYPE html & gt;& Lt; html & gt;[... snip. ..] & lt; / html & gt;Nakon posljednjeg retka, poslužitelj SuperUser-a zatvara vezu.
Prva crta( HTTP / 1.1 200 OK) sadrži kôd odgovora, u ovom slučaju je 200 OK.To znači da će poslužitelj vratiti dokument, kako je zatraženo. Kada poslužitelj to ne uspije, kôd će biti nešto drugo: vjerojatno ste vidjeli 404 Nije pronađeno, a 403 Zabranjeno je prilično uobičajeno. Zatim slijede zaglavlja.
Kada preglednik pronađe praznu liniju u odgovoru, zna da je sve prošlo pored te linije sadržaj dokumenta koji je zatražio. U ovom slučaju & lt;! DOCTYPE html & gt;je prva linija kodova SuperUserove stranice. Ako bih zatražio dokument za preuzimanje, vjerojatno bi to bio neki nejasni znakovi jer većina formata dokumenata nije moguće čitati bez prethodne obrade.
Povratak na zaglavlja. Najzanimljiviji je za nas zadnji sadržaj dužine. Informira preglednika koliko bajtova podataka treba očekivati nakon praznog retka, pa je u osnovi veličina dokumenta izražena u bajtovima. Ovo zaglavlje nije obavezno i poslužitelj može propustiti. Ponekad se veličina dokumenta ne može predvidjeti( primjerice, kada se dokument generira u letu), ponekad ga lijeni programeri ne uključuju( prilično uobičajena mjesta za preuzimanje upravljačkih programa), ponekad web stranice stvaraju novorođenčad koja ne znatakvog zaglavlja.
U svakom slučaju, bez obzira na razlog, zaglavlje može nestati. U tom slučaju preglednik ne zna koliko će podataka poslužitelj poslati i tako prikazuje veličinu dokumenta kao nepoznat , čeka da poslužitelj zatvori vezu. I to je razlog za nepoznate veličine dokumenata.
Imate li nešto za objašnjenje? Zvuči u komentarima.Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.