14Sep

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

click fraud protection

Às vezes, o medidor de progresso de download fiel no seu navegador( ou outro aplicativo) simplesmente joga suas mãos no ar e desiste de exibir o tempo de download restante. Por que às vezes engana o tempo de download projetado e, às vezes, não consegue denunciar tudo isso?

Today's Question &A sessão de atendimento chega a cortesia do SuperUser - uma subdivisão do Stack Exchange, um agrupamento comunitário de sites Q & A.

A pergunta

Leitor de superutilizador Coldblackice quer saber por que seu navegador nem sempre prende a sujeira:

Ocasionalmente, ao fazer o download de um arquivo em um navegador da Web, o progresso do download não "conhece" o tamanho total do arquivo, ouAté onde o download é - apenas mostra a velocidade em que está sendo baixado, com um total como "Desconhecido".

Por que o navegador não conhecia o tamanho final de alguns arquivos? Onde é que ele obtém essa informação em primeiro lugar?

Onde de fato?

O Respondente

Colaborador do SuperUser Gronostaj oferece a seguinte visão:

instagram viewer

Para solicitar documentos a partir de servidores web, os navegadores usam o protocolo HTTP.Você pode saber esse nome da sua barra de endereços( pode estar escondido agora, mas quando você clica na barra de endereços, copie o URL e cole-o em algum editor de texto, você verá http: // no início).É um protocolo simples baseado em texto e funciona assim:

Primeiro, seu navegador se conecta ao servidor do site e envia uma URL do documento que deseja baixar( páginas da web também são documentos) e alguns detalhes sobre o próprio navegador( User-Agent, etc.).Por exemplo, para carregar a página principal no site SuperUser, http: //superuser.com/, o meu navegador envia uma solicitação que se parece com isso:

GET / HTTP / 1.1 Host: superuser.com Conexão: keep-alive Aceitar: text / html, application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: Mozilla / 5.0( Windows NT 6.1; WOW64) Aceitar-codificação: gzip, deflate, sdch Aceitar-Idioma: pl-PLq = 0,8, en-US; q = 0,6, pt; q = 0,4 Cookie: [removido para segurança] DNT: 1 Se-Modificado-Desde: Tue, 09 Jul 2013 07:14:17 GMT

O primeiroA linha especifica qual documento o servidor deve retornar. As outras linhas são chamadas de cabeçalhos;Eles se parecem com isto:

Nome do cabeçalho: Valor do cabeçalho

Estas 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 de alguns cabeçalhos( com detalhes sobre o documento) e, finalmente, se tudo estiver bem, o conteúdo do documento. Isto é o que a resposta do servidor SuperUser para minha solicitação se parece com:

HTTP / 1.1 200 OK Cache-Control: public, max-age = 60 Tipo de Conteúdo: texto / html;charset = utf-8 Expira: Qua, 09 Jul 2013 07:27:20 GMT Última modificação: Ter, 09 Jul 2013 07:26:20 GMT Varia: * X-Frame-Options: SAMEORIGIN Data: Ter, 09 Jul 201307:26:19 GMT Conteúdo-Comprimento: 139672 & lt;! DOCTYPE html & gt;& lt; html & gt;[... snip. ..] & lt; / html & gt;

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 fazer isso, o código será outra coisa: você provavelmente já viu 404 Not Found, e 403 Forbidden também é bastante comum. Em seguida, os cabeçalhos seguem.

Quando o navegador encontrar uma linha vazia na resposta, ele sabe que tudo além dessa linha é o conteúdo do documento solicitado. Então, neste caso & lt;! DOCTYPE html & gt;é a primeira linha do código da página inicial do SuperUser. Se eu estivesse solicitando um documento para fazer o download, provavelmente seria algum personagem gibberish, porque a maioria dos formatos de documentos são ilegíveis sem processamento prévio.

Voltar para cabeçalhos. O mais interessante para nós é o último, Content-Length. Ele informa o navegador quantos bytes de dados 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 na marcha), às vezes os programadores preguiçosos não o incluem( bastante comum em sites de download de drivers), às vezes os sites são criados por novatos que não sabemde um tal cabeçalho.

De qualquer forma, seja qual for o motivo, o cabeçalho pode estar faltando. Nesse caso, o navegador não sabe a quantidade de dados que o servidor irá enviar e, portanto, exibe o tamanho do documento como desconhecido , esperando que o servidor feche a conexão. E essa é a razão para os tamanhos de documentos desconhecidos.

Tem alguma coisa a adicionar à explicação? Som na parte dos comentários. Deseja ler mais respostas de outros usuários Tech-savvy Stack Exchange? Confira o tópico de discussão completo aqui.