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

Satura rādītājs:

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

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

Video: Kāpēc mana tīmekļa pārlūkprogramma dažreiz nespēj parādīt atlikušos lejupielādes laikus?
Video: How to Fix Cast Device not Showing in Chrome - YouTube 2024, Aprīlis
Anonim
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ā?
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ājumu un atbilžu sesija mums priecājas par SuperUser - Stack Exchange dalību, kas ir kopienas vadīta 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ūks ne vienmēr padara netīrumus:

Occasionally, when downloading a file in a web browser, the download progress doesn’t “know” the total size of the file, or how far along in the download it is - it just shows the speed at which it’s downloading, with a total as “Unknown”.

Why wouldn’t the browser know the final size of some files? Where does it get this information in the first place?

Kur tiešām?

Atbildes

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

To request documents from web servers, browsers use the HTTP protocol. You may know that name from your address bar (it may be hidden now, but when you click the address bar, copy the URL and paste it in some text editor, you’ll see

https://

sākumā). 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 arī dokumenti), kā arī dažas detaļas par pašu pārlūkprogrammu (lietotāja aģents utt.). Piemēram, lai ielādētu galveno lapu SuperUser vietnē,

https://superuser.com/

mana pārlūkprogramma sūta pieprasījumu, kas izskatās šādi:

GET / HTTP/1.1 Host: superuser.com Connection: keep-alive Accept: text/html,application/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 Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4 Cookie: [removed for security] DNT: 1 If-Modified-Since: Tue, 09 Jul 2013 07:14:17 GMT

Pirmajā rindā norādīts, kurš dokuments serverim jāatgriež. Pārējās līnijas sauc par galvenes; tie izskatās šādi:

Header name: Header value

Šīs līnijas sūta papildu informāciju, 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: public, max-age=60 Content-Type: text/html; charset=utf-8 Expires: Tue, 09 Jul 2013 07:27:20 GMT Last-Modified: Tue, 09 Jul 2013 07:26:20 GMT Vary: * X-Frame-Options: SAMEORIGIN Date: Tue, 09 Jul 2013 07:26:19 GMT Content-Length: 139672 […snip…]

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īta arī. Tad sākas sekcijas.

Kad pārlūks atbildē atrod tukšu rindu, tā zina, ka viss iepriekšējais rindiņš ir pieprasītā dokumenta saturs. Tātad šajā gadījumā

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,

Content-Length

. Tas informē pārlūkprogrammu, cik daudz baitu datus vajadzētu gaidīt pēc tukšas rindas, tādēļ 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 nezina par šādu virsrakstu.

Jebkurā gadījumā, neatkarīgi no iemesla, galvenes var nebūt. 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āms, gaidot serveri aizvērt savienojumu. Un tas ir iemesls nezināmu dokumentu izmēriem.

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

Ieteicams: