Per què el meu navegador web de vegades no mostra els temps de descàrrega restants?

per què-el-meu-navegador-web-de vegades-falla-a-mostrar-les-temps-de-descàrrega-restants-la-foto 1

De vegades, el mesurador de progrés de descàrrega fidel al vostre navegador (o una altra aplicació) només llança les mans a l'aire i renuncia a mostrar el temps de descàrrega restant. Per què de vegades clava el temps de descàrrega previst i, de vegades, no ho informa tot junt?

La sessió de preguntes i respostes d'avui ens arriba per cortesia de SuperUser, una subdivisió de Stack Exchange, una agrupació de llocs web de preguntes i respostes impulsada per la comunitat.



La Pregunta

El lector de superusuaris Coldblackice vol saber per què el seu navegador no sempre deixa la brutícia:

De tant en tant, quan es descarrega un fitxer en un navegador web, el progrés de la descàrrega no sap la mida total del fitxer o fins a quin punt es troba en la descàrrega; només mostra la velocitat a la qual es descarrega, amb un total com a Desconegut. .

Per què el navegador no sabria la mida final d'alguns fitxers? D'on treu aquesta informació en primer lloc?

On realment?

Les respostes

El col·laborador de SuperUser Gronostaj ofereix la informació següent:

Per sol·licitar documents als servidors web, els navegadors utilitzen el protocol HTTP. Potser coneixeu aquest nom a la vostra barra d'adreces (pot estar amagat ara, però quan feu clic a la barra d'adreces, copieu l'URL i enganxeu-lo en algun editor de text, veureu |_+_| al principi). És un protocol basat en text senzill i funciona així:

Primer, el vostre navegador es connecta al servidor del lloc web i envia una URL del document que vol descarregar (les pàgines web també són documents) i alguns detalls sobre el propi navegador (User-Agent, etc.). Per exemple, per carregar la pàgina principal del lloc de SuperUsuari, |_+_|, el meu navegador envia una sol·licitud amb aquest aspecte:

|_+_|

La primera línia especifica quin document ha de tornar el servidor. Les altres línies s'anomenen capçaleres; tenen aquest aspecte:

|_+_|

Aquestes línies envien informació addicional que ajuda el servidor a decidir què ha de fer.

Si tot va bé, el servidor respondrà enviant el document sol·licitat. La resposta comença amb un missatge d'estat, seguit d'algunes capçaleres (amb detalls sobre el document) i finalment, si tot va bé, el contingut del document. Aquest és el que sembla la resposta del servidor SuperUser a la meva sol·licitud:

|_+_|

Després de l'última línia, el servidor de SuperUser tanca la connexió.

La primera línia (|_+_|) conté el codi de resposta, en aquest cas és |_+_|. Significa que el servidor retornarà un document, tal com se sol·licita. Quan el servidor no ho aconsegueixi, el codi serà una altra cosa: probablement heu vist |_+_|, i |_+_| també és força comú. Després segueixen les capçaleres.

Quan el navegador troba una línia buida a la resposta, sap que tot el que passa aquesta línia és el contingut del document que ha sol·licitat. Així, en aquest cas |_+_| és la primera línia del codi de la pàgina d'inici del superusuari. Si demanés la descàrrega d'un document, probablement es tractaria d'alguns caràcters torpes, perquè la majoria dels formats de documents són il·legibles sense un processament previ.

Tornar a les capçaleres. El més interessant per a nosaltres és l'últim, |_+_|. Informa al navegador quants bytes de dades hauria d'esperar després de la línia buida, de manera que bàsicament és la mida del document expressada en bytes. Aquesta capçalera no és obligatòria i el servidor pot ometre. De vegades no es pot predir la mida del document (per exemple, quan el document es genera sobre la marxa), de vegades els programadors mandrosos no l'inclouen (bastant comú als llocs de descàrrega de controladors), de vegades els llocs web són creats per principiants que no ho saben. d'aquesta capçalera.

De totes maneres, sigui quin sigui el motiu, pot faltar la capçalera. En aquest cas, el navegador no sap quantes dades enviarà el servidor i, per tant, mostra la mida del document com a desconeguda, esperant que el servidor tanqui la connexió. I aquest és el motiu de les mides de documents desconegudes.