14Sep

Kāpēc mana tīmekļa pārlūkprogramma dažreiz nespēj parādīt atlikušos lejupielādes laikus?

Dažreiz uzticamais lejupielādes progresa skaitītājs jūsu pārlūkprogrammā( vai citā lietojumprogrammā) vienkārši izstaro rokas gaisā un atsakās par atlikušās lejupielādes laiku. Kāpēc tas reizēm piesauc plānoto lejupielādes laiku un reizēm to nesniedz kopā?

Šodienas jautājums &Atbildes sesija mums priecājas par SuperUser - Stack Exchange, kas ir kopienas un Q & A tīmekļa vietņu grupa.

Jautājums

SuperUser lasītājs Coldblackice vēlas uzzināt, kāpēc viņa pārlūkprogramma ne vienmēr trauslina netīrumus:

Dažreiz, lejupielādējot failu tīmekļa pārlūkprogrammā, lejupielādes progress nezina kopējo faila lielumu vaicik tālu lejupielādē tas ir - tas tikai parāda ātrumu, kādā tas tiek lejupielādēts, kopā kā "Nezināms".

Kāpēc pārlūkprogramma nezinātu dažu failu galīgo izmēru? Kur tā iegūst šo informāciju vispirms?

Kur tiešām?

Atbildes

SuperUser atbalstītājs Gronostaj piedāvā šādu ieskatu:

Lai pieprasītu dokumentus no tīmekļa serveriem, pārlūkprogrammas izmanto HTTP protokolu. Jūs varat zināt šo vārdu no jūsu adreses joslas( tas var būt paslēpts tagad, bet, noklikšķinot uz adrešu joslas, kopējiet URL un ielīmējiet to kādā teksta redaktorā, sākumā redzēsiet http: //).Tas ir vienkāršs teksta protokols, un tas darbojas šādi:

Pirmkārt, jūsu pārlūkprogramma pieslēdzas vietnes serverim un nosūta tā dokumenta URL, kuru vēlaties lejuplādēt( arī tīmekļa lapas ir dokumenti), kā arī dažas detaļas par pašu pārlūkprogrammu( Lietotāja aģents uc).Piemēram, lai ielādētu galveno lapu SuperUser vietnē, http: //superuser.com/, mans pārlūks sūta pieprasījumu, kas izskatās šādi:

GET / HTTP / 1.1 Host: superuser.com Savienojums: keep-alive Pieņemt: text / html, programma/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Lietotāja aģents: Mozilla / 5.0( Windows NT 6.1; WOW64) Accept-Encoding: gzip, deflate, sdch Accept-Language: pl-PL, pl; q = 0,8; en-US; q = 0,6; en; q = 0,4 Cookie: [noņemts drošības nolūkos]; DNT: 1 ja-modificēts-kopš: Tue, 09 Jul 2013 07:14:17 GMT

Pirmaislīnija norāda, kurš dokuments serverim jāatgriež.Pārējās līnijas sauc par galvenes;tie izskatās šādi:

Nosaukuma nosaukums: Virsraksta vērtība

Šajās rindās tiek nosūtīta papildu informācija, kas serverim palīdz izlemt, ko darīt.

Ja viss ir kārtībā, serveris atbildēs, nosūtot pieprasīto dokumentu. Atbilde sākas ar statusa ziņojumu, kam seko dažas galvenes( ar informāciju par dokumentu) un, visbeidzot, ja viss ir labi, dokumenta saturs. Tas ir tas, ko SuperUser servera atbilde manam pieprasījumam izskatās:

HTTP / 1.1 200 OK Cache-Control: publiskā, max-age = 60 Content-Type: text / html;charset = utf-8 Derīguma termiņš: Tue, 09 Jul 2013 07:27:20 GMT Pēdējās izmaiņas: Tue, 09 Jul 2013 07:26:20 GMT Mainīt: * X-Frame-opcijas: SAMEORIGIN Datums: T, 09 jūlijs 201307:26:19 GMT Content-Length: 139672 & lt;! DOCTYPE html & gt;& lt; html & gt;[... snip. ..] & lt; / html & gt;

Pēc pēdējās rindiņas SuperUser serveris aizver savienojumu.

Pirmā rindiņa( HTTP / 1.1 200 OK) satur atbildes kodu, šajā gadījumā tas ir 200 OK.Tas nozīmē, ka serveris atgriezīs dokumentu, kā pieprasīts. Ja serveris to nespēj izdarīt, kods būs kaut kas cits: jūs, iespējams, redzējāt 404 Not Found, un 403 Forbidden ir diezgan izplatīts. Tad sākas sekcijas.

Kad pārlūks atbildē atrod tukšu rindiņu, tas zina, ka viss iepriekšējais rindiņš ir pieprasītā dokumenta saturs. Tātad šajā gadījumā & lt;! DOCTYPE html & gt;ir SuperUser mājas lapas koda pirmā rinda. Ja es pieprasīju lejupielādējamo dokumentu, tas, iespējams, būtu daži viltīgie rakstzīmes, jo lielākā daļa dokumentu formātu nav lasāmi bez iepriekšējas apstrādes.

Atpakaļ uz galvenēm. Visinteresantākais mums ir pēdējais, saturs-garums. Tas informē pārlūkprogrammu, cik daudz baitu datu vajadzētu sagaidīt pēc tukšas līnijas, tāpēc būtībā tas ir dokumenta lielums, kas izteikts baitos.Šis virsraksts nav obligāts, un to var izlaist serveris. Dažreiz dokumenta izmēru nevar prognozēt( piemēram, kad dokuments tiek ģenerēts lidojuma laikā), dažreiz slinki programmētāji to neiekļauj( tas ir diezgan izplatīts vadītāja lejupielādes vietnēs), dažreiz tīmekļa vietnes izveido iesācēji, kas nezinapar šādu virsrakstu.

Jebkurā gadījumā, neatkarīgi no iemesla, galvenē var trūkt. Tādā gadījumā pārlūkprogramma nezina, cik daudz datu serveris gatavojas sūtīt, un tādējādi parāda dokumenta izmēru kā nezināmajā , gaidot servera savienojuma noslēgšanu. Un tas ir iemesls nezināmu dokumentu izmēriem.

Vai kaut kas jāpievieno paskaidrojumam? Skatieties komentāros. Vēlaties lasīt citas atbildes no citiem tehnoloģiju savvy Stack Exchange lietotājiem?Šeit skatiet pilnu diskusiju pavedienu.