¿por qué mi navegador web a veces no se muestran los tiempos de descarga restante?

A veces los fieles medidor de progreso de la descarga de su navegador (u otra aplicación) simplemente lanza sus manos en el aire y se da por vencido en mostrar el tiempo de descarga restante. ¿Por qué a veces clavar el tiempo de descarga proyectada y, a veces no se presenta todo junto?

Pregunta y respuesta sesión de hoy nos llega por cortesía de superusuario, una subdivisión de Stack Exchange, una agrupación impulsado por la comunidad de Q & A sitios web.

lector de superusuario Coldblackice quiere saber por qué su navegador no siempre plato de la suciedad

De vez en cuando, al descargar un archivo en un navegador web, el progreso de la descarga no “sabe” el tamaño total del archivo, o qué tan avanzado en la descarga es – sólo se muestra la velocidad a la que se está descargando, con un total como “Desconocido”.

¿Por qué no el navegador saber el tamaño final de algunos archivos? ¿De dónde obtiene esta información en el primer lugar?

Donde de hecho?

Superusuario colaborador Gronostaj ofrece la siguiente reflexión

Para solicitar documentos a los servidores web, los navegadores utilizan el protocolo HTTP. Usted puede saber que el nombre de la barra de direcciones (que puede estar oculto, pero al hacer clic en la barra de direcciones, copiar la URL y pegarla en algún editor de texto, verá http: // al principio). Es un simple protocolo basado en texto y funciona de la siguiente

En primer lugar, su navegador se conecta al servidor del sitio web y envía una URL del documento que quiere descargar (páginas web son documentos, también) y algunos detalles sobre el propio navegador (User-Agent, etc). Por ejemplo, para cargar la página principal del sitio de superusuario, http://superuser.com/, el navegador envía una petición que tiene este aspecto

La primera línea especifica que el documento del servidor debería devolver. Las otras líneas se denominan cabeceras, sino que se parecen a esto

Estas líneas de enviar información adicional que ayuda al servidor de decidir qué hacer.

Si todo va bien, el servidor responderá mediante el envío del documento solicitado. La respuesta comienza con un mensaje de estado, seguido de algunas cabeceras (con detalles sobre el documento) y, finalmente, si todo va bien, el contenido del documento. Esto es lo que la respuesta del servidor de superusuario para mi solicitud se parece

Después de la última línea, el servidor de superusuario cierra la conexión.

La primera línea (HTTP / 1.1 200 OK) contiene el código de respuesta, en este caso se trata de 200 OK. Esto significa que el servidor devolverá un documento, conforme a lo solicitado. Cuando el servidor no logra hacerlo, el código será algo más: es probable que haya visto 404 no encontrado, y 403 Prohibida es bastante común, también. A continuación, las cabeceras siguen.

Cuando el navegador encuentra una línea vacía en la respuesta, sabe que todo lo pasado esa línea es el contenido del documento que solicitó. Así que en este caso es la primera línea de código de la página de inicio de superusuario. Si yo estaba solicitando un documento para descargar, sería probablemente algunos caracteres incomprensibles, porque la mayoría de los formatos de documentos no se pueden leer sin procesamiento previo.

Volver a las cabeceras. La más interesante para nosotros es la última, Content-Length. Se informa al navegador cómo muchos bytes de datos que debe esperar después de la línea de vacío, por lo que básicamente es el tamaño del documento expresado en bytes. Esta cabecera no es obligatoria y puede ser omitida por el servidor. A veces, el tamaño del documento no se puede predecir (por ejemplo, cuando se genera el documento sobre la marcha), a veces los programadores perezosos no lo incluyen (muy común en sitios de descarga de controlador), a veces sitios web son creados por los novatos que no saben de una cabecera de tales.

De todos modos, cualquiera que sea la razón es, la cabecera puede faltar. En ese caso, el navegador no sabe la cantidad de datos que el servidor va a enviar, y por lo tanto muestra el tamaño del documento como desconocido, esperando el servidor para cerrar la conexión. Y esa es la razón de tamaños de documentos desconocidos.

Si tiene algo que añadir a la explicación? En off en los comentarios. ¿Quieres leer más respuestas de otros usuarios Stack Exchange conocedores de la tecnología? Echa un vistazo a la rosca discusión completa aquí.

La densidad de datos de almacenamiento de datos basado en el ADN es bastante impresionantes: un gramo de almacenamiento de ADN puede contener 455 exabytes de datos.