nginx proxy_buffering e enviar resposta ao cliente imediatamente

1

Para dividir a pergunta em uma frase: É possível ativar o proxy_buffering no nginx, mas enviar a resposta do servidor de back-end imediatamente para o cliente quando o cliente é rápido o suficiente para suportar e, se não, para armazená-lo em buffer?

Se você desligar o proxy_buffering, todas as solicitações passarão pelo nginx, mas o servidor backend ainda estará aberto até que todos os dados sejam enviados ao cliente. Se você ativar o proxy_buffering, o nginx esperará até que o servidor de back-end seja concluído, do que começará a enviar os dados para o cliente, e o servidor de back-end poderá fechar o processo antes que os dados estejam no cliente.

Para simplificar: quero as vantagens de ambos: quero que o cliente obtenha o mais rapidamente possível os primeiros blocos do servidor backend, mas também quero que todos os dados do servidor backend que não podem ser passados para o cliente (por exemplo, conexão lenta) será bufferd por nginx para que o processo do servidor backend possa ser fechado o mais rápido possível.

Para entender por que eu preciso disso: Eu tenho um servidor backend php com um aplicativo que libera a saída em seqüências. Portanto, se você solicitar uma página, o HTML com css, js e assim por diante será liberado quase imediatamente após o processo ser iniciado, depois disso o trabalho de aplicativo "pesado" foi iniciado e eu enviei uma parte do html em fatias. Assim, o benefício disso é que o cliente / navegador pode começar a baixar o .js, .css e analisá-los antes que a solicitação seja concluída e, assim, eu reduzo o caminho crítico de renderização do meu site.

O problema é que, se o proxy_buffering estiver ativado, o cliente não obterá dados para trabalhar até que o pedido do backend seja concluído. Se eu virar o proxy_buffering, o processo de backend fica aberto até que o cliente receba os últimos dados.

Obrigado antecipadamente

    
por basis 31.07.2015 / 14:52

0 respostas