Por que meu navegador da Web às vezes não exibe os tempos de download restantes?

Índice:

Por que meu navegador da Web às vezes não exibe os tempos de download restantes?
Por que meu navegador da Web às vezes não exibe os tempos de download restantes?

Vídeo: Por que meu navegador da Web às vezes não exibe os tempos de download restantes?

Vídeo: Por que meu navegador da Web às vezes não exibe os tempos de download restantes?
Vídeo: 15 Atalhos Surpreendentes Que Você Não Está Usando - YouTube 2024, Abril
Anonim
Às vezes, o medidor de progresso de download fiel em seu navegador (ou outro aplicativo) apenas joga suas mãos no ar e desiste de exibir o tempo de download restante. Por que, às vezes, o tempo de download projetado é interrompido e, às vezes, não é possível relatar tudo junto?
Às vezes, o medidor de progresso de download fiel em seu navegador (ou outro aplicativo) apenas joga suas mãos no ar e desiste de exibir o tempo de download restante. Por que, às vezes, o tempo de download projetado é interrompido e, às vezes, não é possível relatar tudo junto?

A sessão de perguntas e respostas de hoje nos é oferecida por cortesia do SuperUser, uma subdivisão do Stack Exchange, um agrupamento de sites de perguntas e respostas conduzido pela comunidade.

A questão

Leitor de SuperUser Coldblackice quer saber porque seu navegador nem sempre limpa a sujeira:

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?

Onde de fato?

As respostas

O colaborador do SuperUser Gronostaj oferece a seguinte visão:

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://

no inicio). É um protocolo simples baseado em texto e funciona assim:

Primeiro, o navegador se conecta ao servidor do site e envia uma URL do documento que deseja baixar (as páginas da Web também são documentos) e alguns detalhes sobre o próprio navegador (Agente do usuário, etc.). Por exemplo, para carregar a página principal no site do SuperUser,

https://superuser.com/

meu navegador envia uma solicitação semelhante a esta:

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

A primeira linha especifica qual documento o servidor deve retornar. As outras linhas são chamadas de cabeçalhos; eles se parecem com isso:

Header name: Header value

Essas linhas enviam informações adicionais que ajudam o servidor a decidir o que fazer.

Se tudo estiver bem, o servidor responderá enviando o documento solicitado. A resposta começa com uma mensagem de status, seguida por alguns cabeçalhos (com detalhes sobre o documento) e, por fim, se tudo estiver bem, o conteúdo do documento. É assim que a resposta do servidor do SuperUser para minha solicitação se parece:

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

Após a última linha, o servidor do SuperUser fecha a conexão.

A primeira linha (

HTTP/1.1 200 OK

) contém o código de resposta, neste caso é

200 OK

. Isso significa que o servidor retornará um documento, conforme solicitado. Quando o servidor não conseguir, o código será outra coisa: você provavelmente já viu

404 Not Found

e

403 Forbidden

é bastante comum também. Então os cabeçalhos seguem.

Quando o navegador encontra uma linha vazia na resposta, sabe que tudo o que passou dessa linha é o conteúdo do documento solicitado. Então neste caso

é a primeira linha do código da página inicial do SuperUser. Se eu estivesse solicitando um documento para download, provavelmente seriam alguns caracteres sem sentido, porque a maioria dos formatos de documentos é ilegível sem processamento prévio.

De volta aos cabeçalhos. O mais interessante para nós é o último,

Content-Length

. Ele informa ao navegador quantos bytes de dados ele deve esperar após a linha vazia, então, basicamente, é o tamanho do documento expresso em bytes. Este cabeçalho não é obrigatório e pode ser omitido pelo servidor. Às vezes, o tamanho do documento não pode ser previsto (por exemplo, quando o documento é gerado em tempo real), às vezes os programadores preguiçosos não o incluem (muito comum em sites de download de drivers), às vezes sites são criados por novatos que não sabem de tal cabeçalho.

De qualquer forma, seja qual for o motivo, o cabeçalho pode estar faltando. Nesse caso, o navegador não sabe quantos dados o servidor enviará e, portanto, exibe o tamanho do documento comodesconhecido, aguardando o servidor fechar a conexão. E essa é a razão para tamanhos desconhecidos de documentos.

Tem algo a acrescentar à explicação? Soe fora nos comentários. Quer ler mais respostas de outros usuários do Stack Exchange com experiência em tecnologia? Confira o tópico de discussão completo aqui.

Recomendado: