Os navegadores da Web não mostram o progresso do download ao fazer o download do meu servidor Apache

1

O Safari / Firefox / Chrome mostra apenas uma barra de progresso indeterminada ao baixar arquivos grandes, embora o cabeçalho de tamanho do conteúdo esteja definido. Alguma ideia de por que isso poderia ser? Esta é uma instalação padrão do Apache 2.2 (-ish).

bash# curl -I http://nodebox.net/download/nodebox2/nodebox-2.0.0.960-setup.exe
HTTP/1.1 200 OK
Date: Mon, 14 Dec 2009 13:35:04 GMT
Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch15 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_wsgi/2.3 mod_perl/2.0.2 Perl/v5.8.8
Last-Modified: Mon, 14 Dec 2009 11:54:22 GMT
ETag: "11acd74-1e7c1de-ef263780"
Accept-Ranges: bytes
Content-Length: 31965662
Vary: Accept-Encoding
Content-Type: application/x-msdos-program
    
por Frederik 14.12.2009 / 14:43

1 resposta

1

O que você quer dizer com "barra intermediária de progresso"? - não aparece na caixa de downloads ou simplesmente não mostra progresso. Que tipo de tamanho de arquivo mostra e não? Qual é a velocidade da sua conexão com esse servidor a partir da máquina que você está testando?

Pode ser que você simplesmente não esteja vendo nenhum progresso para arquivos menores, porque eles aparecem tão rapidamente que nunca há tempo para exibi-los. Este pode ser o caso, mesmo se o download não for instantâneo, pois o processo é mais do que apenas "obter o conteúdo" - é:

  1. solicita o objeto (isso geralmente leva um tempo muito curto, um pouco mais longo para os HTTPs, mas pode levar mais tempo se o servidor ou o link estiver ocupado)
  2. espere que a primeira informação apareça (isso pode demorar um pouco se for o resultado de um script e / ou você estiver usando mod_gzip ou similar, pois nesses casos o processo no servidor da web pode esperar até que o todo o script está completo antes de enviar o primeiro byte de dados)
  3. transfere os dados - para arquivos pequenos isso pode ser visualmente instantâneo em um link rápido (a barra de progresso não pode ser desenhada até que o primeiro byte chegue, e o último byte pode chegar uma fração de segundo depois disso) barra está lá e foi mais rápido do que você pode ver
  4. jigger-pokery pós-download (verificações AV e assim por diante), que pode demorar um pouco dependendo da sua configuração

Somente na etapa 3 você esperaria uma barra de progresso e só poderia ser uma fração do tempo de download em um link rápido. Alguns arranjos de proxy podem agravar isso, pois eles podem armazenar em buffer um arquivo maior que leva vários segundos (ou dezenas de segundos, ou mais) para transferir em sua conexão de rede externa, de modo que o aplicativo cliente veja a solicitação sendo finalizada, aguarde o primeiro byte de resposta (durante o tempo em que o proxy está realmente recebendo o arquivo) e obtém tudo em uma fração de segundo de uma só vez a partir do proxy (então o passo 3 acima é quase instantâneo do ponto de vista).

Todos os itens acima são genéricos - você precisará adicionar mais detalhes e análises à sua pergunta para uma resposta mais específica.

    
por 14.12.2009 / 15:30