Cache do Apache servindo conteúdo parcial 206 respostas a solicitações para o conteúdo completo

7

Estamos rodando o Plone 3.3.6 atrás do Apache 2.2.19 com mod_cache. Recentemente, notamos que o Apache está armazenando em cache a resposta 206 em uma solicitação de intervalo e, em seguida, atendendo a essa resposta parcial quando uma solicitação para o recurso completo é feita.

O que parece acontecer:

  • algum cliente faz uma solicitação de intervalo para um recurso que ainda não está no cache ou está no cache, mas expirou
  • O Apache exibe a resposta 206 corretamente
  • outro cliente torna uma solicitação padrão o mesmo recurso
  • O Apache exibe a mesma resposta para este segundo cliente: ele deve atender a resposta inteira com um 200

Isso está causando problemas com o nosso CSS em alguns sites, muito ocasionalmente

Eu posso replicar isso consistentemente: eu escrevi um pequeno script python para fazer uma solicitação de intervalo.

Eu não acho que não estamos fazendo nada fora do comum com a nossa configuração do Apache. Estamos usando a configuração de proxy reverso para servir páginas do Plone. A configuração do Apache relevante para o mod_cache é a seguinte:

CacheEnable disk /
CacheDisable /static
CacheDisable /sitemap.xml.gz
CacheDisable /robots.txt
CacheIgnoreHeaders Set-Cookie

UseCanonicalName On

RequestHeader edit Accept-Encoding ^.*gzip.*$ gzip early
RequestHeader edit Accept-Encoding ^(?!gzip).*$ "" early

O Guia de cache do Apache não inclui 206 respostas na lista de códigos de status da resposta " deve ter "para ser armazenado em cache. Isso é um bug no Apache ou estamos fazendo algo errado na configuração?

    
por scarba05 05.09.2011 / 17:52

2 respostas

4

Este é o bug do apache 49113 e foi fixado no tronco mas não no 2.2.19.

    
por 05.09.2011 / 21:17
0

Isso é corrigido no Apache 2.2.23. Atualize para 2.2.23 e você não precisa fazer o patch

    
por 08.04.2013 / 15:08