¿Por qué mi navegador web a veces no muestra los tiempos de descarga restantes?
A veces, el medidor de progreso de descarga fiel en su navegador (u otra aplicación) simplemente lanza sus manos al aire y se da por vencido al mostrar el tiempo de descarga restante. ¿Por qué a veces determina el tiempo de descarga proyectado y, a veces, no lo informa todo junto??
La sesión de Preguntas y Respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, un grupo de sitios web de preguntas y respuestas impulsado por la comunidad..
La pregunta
El lector Superusuario Coldblackice quiere saber por qué su navegador no siempre mancha la suciedad:
Ocasionalmente, cuando se descarga un archivo en un navegador web, el progreso de la descarga no "conoce" el tamaño total del archivo, o qué tan avanzado está la descarga, solo muestra la velocidad a la que se está descargando, con un total como "desconocido".
¿Por qué el navegador no sabe el tamaño final de algunos archivos? ¿De dónde obtiene esta información en primer lugar??
Donde de hecho?
Las respuestas
El colaborador de SuperUser Gronostaj ofrece la siguiente perspectiva:
Para solicitar documentos de servidores web, los navegadores utilizan el protocolo HTTP. Puede que conozcas ese nombre en la barra de direcciones (puede que ahora esté oculto, pero cuando hagas clic en la barra de direcciones, copies la URL y la pegues en algún editor de texto, verás)
http: //
al principio). Es un protocolo simple basado en texto y funciona así:Primero, su navegador se conecta al servidor del sitio web y envía una URL del documento que desea descargar (las páginas web también son documentos) y algunos detalles sobre el navegador (User-Agent, etc.). Por ejemplo, para cargar la página principal en el sitio SuperUser,
http://superuser.com/
, mi navegador envía una solicitud que se ve así:GET / HTTP / 1.1 Host: superuser.com Conexión: keep-alive Acepta: text / html, application / xhtml + xml, application / xml; q = 0.9, * / *; q = 0.8 User-Agent: Mozilla / 5.0 ( Windows NT 6.1; WOW64) Aceptar-Codificar: gzip, desinflar, sdch Aceptar lenguaje: pl-PL, pl; q = 0.8, en-US; q = 0.6, en; q = 0.4 Cookie: [eliminado por seguridad] DNT : 1 If-Modified-Since: Tue, 09 Jul 2013 07:14:17 GMT
La primera línea especifica qué documento debe devolver el servidor. Las otras líneas se llaman encabezados; se ven así:
Nombre del encabezado: Valor del encabezado
Estas líneas envían información adicional que ayuda al servidor a decidir qué hacer.
Si todo está bien, el servidor responderá enviando el documento solicitado. La respuesta comienza con un mensaje de estado, seguido de algunos encabezados (con detalles sobre el documento) y, finalmente, si todo está bien, el contenido del documento. Así es como se ve la respuesta del servidor Superusuario a mi solicitud:
HTTP / 1.1 200 Aceptar Cache-Control: public, max-age = 60 Content-Type: text / html; charset = utf-8 Vence: martes, 09 de julio de 2013 07:27:20 GMT Modificado por última vez: martes, 09 de julio de 2013 07:26:20 GMT Variar: * Opciones de X-Frame: SAMEORIGIN Fecha: martes, 09 de julio de 2013 07:26:19 GMT Content-Length: 139672 [... recorte ...]
Después de la última línea, el servidor de SuperUser cierra la conexión..
La primera línea (
HTTP / 1.1 200 OK
) contiene el código de respuesta, en este caso es200 ok
. Esto significa que el servidor devolverá un documento, según lo solicitado. Cuando el servidor no logre hacerlo, el código será otra cosa: probablemente lo haya visto.404 No encontrado
, y403 Prohibido
Es bastante común, también. Luego los encabezados siguen.Cuando el navegador encuentra una línea vacía en la respuesta, sabe que todo lo que pasa esa línea es el contenido del documento que solicitó. Así que en este caso
es la primera línea del código de la página de inicio del Superusuario. Si estuviera solicitando un documento para descargar, probablemente serían algunos caracteres incomprensibles, porque la mayoría de los formatos de documentos no se pueden leer sin un procesamiento previo.
Volver a los encabezados. El más interesante para nosotros es el último.,
Largancia de contenido
. Informa al navegador cuántos bytes de datos debe esperar después de la línea vacía, por lo que básicamente es el tamaño del documento expresado en bytes. Este encabezado no es obligatorio y puede ser omitido por el servidor. A veces el tamaño del documento no se puede predecir (por ejemplo, cuando el documento se genera sobre la marcha), a veces los programadores perezosos no lo incluyen (bastante común en los sitios de descarga de controladores), a veces los sitios web son creados por novatos que no saben de tal encabezado.De todos modos, sea cual sea el motivo, puede faltar el encabezado. En ese caso, el navegador no sabe cuántos datos enviará el servidor y, por lo tanto, muestra el tamaño del documento como desconocido, esperando que el servidor cierre la conexión. Y ese es el motivo de tamaños de documentos desconocidos..
¿Tienes algo que agregar a la explicación? Apague el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.