loader

Зашто мој веб претраживач понекад не приказује приказ преосталог времена преузимања?

Anonim

Понекад вјерни мјерач напретка преузимања на вашем прегледнику (или другој апликацији) само баца руке у зрак и одустаје од приказивања преосталог времена преузимања. Зашто понекад нокти пројицирано време преузимања и понекад не сазна све то заједно?

Данашња сесија питања и одговора долази нам захваљујући СуперУсер-у - подјела Стацк Екцханге-а, групиране веб-локације за питања и одговоре у заједници.

Питање

Читач СуперУсер Цолдблацкице жели да зна зашто његов претраживач не прати прљавштину:

Повремено, када преузимате датотеку у веб прегледачу, напредак преузимања не „зна“ укупну величину датотеке, нити колико је далеко у преузетој датотеци - она ​​само показује брзину којом се преузима, са укупно као “Непознато”.

Зашто претраживач не би знао коначну величину неких датотека? Где уопште добија ове информације?

Где заиста?

Одговори

Доприносник СуперУсер-а Гроностај нуди следећи увид:

Да бисте захтевали документе од веб сервера, претраживачи користе ХТТП протокол. То име можете знати из адресне траке (можда је сада скривено, али када кликнете на адресну траку, копирајте УРЛ адресу и налепите је у неки текст едитор, видећете // на почетку). То је једноставан протокол заснован на тексту и ради овако:

Прво, ваш претраживач се повезује са сервером веб сајта и шаље УРЛ документа који жели да преузме (веб странице су и документи) и неке детаље о самом претраживачу (Усер-Агент итд.). На пример, да би се главна страница //superuser.com/ на СуперУсер сајт, //superuser.com/, мој прегледач шаље захтев који изгледа овако:

 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 

Прва линија наводи који документ сервер треба да врати. Остале линије се зову заглавља; изгледају овако:

 Header name: Header value 

Ове линије шаљу додатне информације које помажу серверу да одлучи шта да ради.

Ако је све у реду, сервер ће одговорити слањем траженог документа. Одговор почиње са поруком о статусу, након чега слиједе неки заглавља (с детаљима о документу) и коначно, ако је све у реду, садржај документа. Овако изгледа одговор од СуперУсер сервера за мој захтев:

 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...] 

После последње линије, СуперУсер сервер затвара везу.

Прва линија ( HTTP/1.1 200 OK ) садржи одзивни код, у овом случају је 200 OK . То значи да ће сервер вратити документ као што је затражено. Када сервер не успе, код ће бити нешто друго: вероватно сте видели 404 Not Found, а 403 Forbidden је прилично уобичајен. Затим следе заглавља.

Када претраживач пронађе празан ред у одговору, он зна да је све што је прошло ту линију садржај документа који је тражио. Дакле, у овом случају је прва линија кода почетне странице СуперУсер-а. Ако бих тражио да преузмем документ, вероватно би то били неки бесмислени знакови, јер је већина формата докумената нечитљива без претходне обраде.

Назад на заглавља. За нас је најзанимљивија посљедња, Content-Length . Информише прегледачу колико бајтова података треба да очекује након празне линије, тако да је у основи величина документа изражена у бајтовима. Ово заглавље није обавезно и може га изоставити сервер. Понекад се величина документа не може предвидети (на пример, када се документ генерише у лету), понекад лењи програмери не укључују (прилично уобичајени на сајтовима за преузимање управљачких програма), а понекад су и веб сајтови креирани од стране почетника који не знају таквог заглавља.

У сваком случају, без обзира на разлог, заглавље може недостајати. У том случају претраживач не зна колико ће података послужитељ послати, и тако приказује величину документа као непознату, чекајући да сервер затвори везу. И то је разлог непознатих величина докумената.


Имате ли нешто да додате објашњењу? Звучи у коментарима. Желите ли прочитати више одговора од других технолошки паметних Стацк Екцханге корисника? Погледајте цео дискусију овде.