Como evitar que fluxos de fluxo de texto / evento sejam armazenados em buffer por proxies da Web ansiosos?

1

Estou escrevendo um aplicativo que usa eventos enviados pelo servidor para pressionar atualizações para o navegador. Isso funciona muito bem na maior parte, exceto quando o cliente está por trás de um proxy "web accelerator" que armazena de forma muito agressiva a saída de um servidor web, mesmo se o cache-control header for no-cache . Eu preciso enviar uma quantidade muito grande de dados, antes que o proxy decida me dar qualquer coisa, o que significa que as atualizações estão atrasadas por um tempo muito longo.

Acredito que esse proxy não esteja em conformidade com o padrão HTTP, mas não posso mudar o fato de que eles existem por aí. Assim, preciso de uma maneira de contornar o problema.

Existe algum truque (algum cabeçalho mágico, talvez?) que eu possa usar para garantir que meus eventos sejam entregues a tempo?

    
por Elias Mårtenson 09.10.2014 / 09:34

1 resposta

1

Você tem mais opções do que apenas no-cache no cabeçalho Cache-Control com relação às instruções de cache para o navegador de visitantes, bem como para quaisquer servidores proxy de cache intermediário:

  • private ou public ; uma resposta privada é específica para um usuário e não deve ser armazenada em cache, uma resposta pública pode ser armazenada em cache.
  • no-cache faz basicamente o que parece e é uma instrução para revalidar o recurso para cada solicitação subsequente. Embora, após a validação, o recurso ainda seja válido, uma resposta armazenada em cache ainda pode ser atendida.
  • no-store uma instrução clara de que a resposta deve ser tratada como confidencial e não armazenada, um pouco mais strong que a opção no-cache acima.
  • max-age em segundos substitui o cabeçalho Expires e instrui quando um ativo está vencido e deve ser limpo do cache.
  • s-maxage em segundos é o mesmo que acima, mas para caches compartilhados como redes de entrega de conteúdo.

Você pode tentar se combiná-los dá melhores resultados.

A alternativa simples pode ser, claro, habilitar o TLS onde o acelerador da Web simplesmente não consegue mais ler os dados entre seus visitantes e o servidor da web.

    
por 09.10.2014 / 09:52