O Apache 2 pode ser configurado para começar a enviar dados gzipados antecipadamente?

1

Temos o Apache configurado para compactar páginas html antes de serem enviadas ao navegador do cliente.

No entanto, algumas de nossas páginas são lentas para gerar e parece que o Apache está aguardando até ter a página completa, compactando-a e enviando-a para o navegador .

Existem grandes pedaços da página (os principais bits importantes) que são gerados e gerados rapidamente.

É possível configurar o Apache para começar a compactar e enviar dados para a página assim que o script começar a produzir algo? É, você pode oferecer alguma ajuda é como fazer isso?

Se não, você pode sugerir alguma outra maneira de fazer com que a compactação gzip funcione para o servidor?

Os scripts que geram as páginas são escritos em PHP . Estamos usando o Apache 2.0 no Linux.

    
por Rik Heywood 13.01.2010 / 12:34

3 respostas

1

Tivemos o mesmo problema com um backend perl. Estou procurando os documentos que me apontaram @ a solução. Em última análise, tinha a ver com o gzip tentando comprimir o documento inteiro para calcular o tamanho do conteúdo.

Tivemos alguns scripts de longa duração que arruinaram a experiência do usuário - em vez de obter a saída incrementalmente, eles estavam esperando por 2-3 minutos sem atividade!

Atualização:

Temo que não consiga encontrá-lo. Revendo nossos logs de atividades, parece que eu simplesmente os desativei em nosso servidor web, então movi um frontend baseado em nginx por este e outros motivos (ele irá gzip com codificação em pedaços sem ter que enviar o tamanho do conteúdo)

Tente fazer o upgrade para o Apache 2.2, as versões mais recentes do apache lidaram com a coisa chunked / gzip muito melhor.

    
por 13.01.2010 / 14:19
1

Chama-se 'Early flushing' e é principalmente uma questão de apenas correr 'flush ();' antes que toda a página tenha sido gerada. Normalmente, um servidor PHP otimizado, como você descobriu, armazena a página inteira em buffer, mas uma chamada deliberada para flush () substitui isso. A página de dicas do Yahoo tem mais informações: link

    
por 13.01.2010 / 15:04
1

Envie flush () de tempos em tempos ou após seus bloqueios e, a menos que você use obstart (), o apache enviará respostas em partes.

    
por 10.04.2010 / 05:04