Mod_pagespeed, problemas de cache do Varnish e do Apache após novos pushes de código

2

Eu tenho um problema bastante estranho. No meu ambiente, estamos executando um cluster de balanceamento de carga de 8 servidores apache com um backend mestre-mestre do MySQL. Na frente do apache, temos o verniz na camada de cache.

Temos rodado o mod_pagespeed do Apache há várias semanas e, na maior parte do tempo, ele tem funcionado muito bem. O problema surge quando fazemos novas atualizações de código do Git e / e todos os recursos do JS / CSS são alterados.

Basicamente, o problema parece ser duplo. Primeiro, após o push do código, geralmente aproveitamos a oportunidade para limpar o verniz, reiniciar o apache e reiniciar o verniz. Ao fazer isso, todos os arquivos mod_pagespeed combinied / minified são limpos, garantindo que todos os novos recursos JS / CSS sejam atualizados. O problema é, ao fazer isso, os nomes de arquivos que mod_pagespeed criam mudanças, mas os arquivos antigos (aparecem) ainda são armazenados em cache para muitas pessoas, levando a resultados muito inesperados. No entanto, se não reiniciarmos o apache, as alterações nos arquivos poderão ou não aparecer no lado do cliente devido aos recursos minúsculos armazenados em cache.

A solução simples é desabilitar mod_pagespeed, no entanto, prefiro não fazer isso, pois causou um impacto bastante grande no desempenho.

Sinto que deve haver uma maneira melhor de lidar com as inconsistências no cache entre o cliente e o servidor para evitar que as pessoas percorram o limite ou realizem um grande número de atualizações de página para ver uma página de trabalho.

Eu posso fornecer snippets de configuração se alguém precisar deles.

Se você quiser inspecionar o site, fonte, cabeçalhos ou qualquer coisa, tente os seguintes endereços:

link

link

Obrigado antecipadamente!

    
por WerkkreW 15.07.2011 / 18:22

2 respostas

1

Apenas para ter certeza de que entendi o problema, parece que você está modificando arquivos que foram entregues até mod_pagespeed de verniz com cabeçalhos de expiração que o mantêm em cache além de quando ele foi alterado no back-end.

Você tem algumas opções aqui, se for esse o caso. Você pode configurar seu back-end (verniz) para enviar cabeçalhos de expiração mais curtos. Ou você pode configurar seus recursos não armazenados em cache para vincular às versões em cache com números de patch que você pode incrementar quando fizer alterações. Então eles se tornam:

link

Também parece que existem outros knobs que você pode tweek em mod_pagespeed para alterar os tempos de expiração de determinados arquivos:

link

Também em relação ao lado do cliente, aqui estão mais informações sobre como eles agem que ajudarão a configurar tanto o verniz quanto o mod_pagespeed:

link

    
por 24.08.2011 / 09:52
1

Você escreveu sobre o verniz de lavagem. Na verdade, existem duas maneiras diferentes de fazer isso:

  1. remova um documento específico (página HTML, imagem, arquivo CSS ou qualquer outro) com base em um URL específico e suas variantes (geralmente versões de idiomas diferentes ou versões compactadas / descompactadas) - isso é chamado principalmente de eliminação
  2. anulou um grupo de documentos (página HTML, imagem, arquivo CSS ou qualquer outro) com base em uma expressão regular - isso é chamado ban

No seu caso, uma proibição de todos os arquivos HTML, CSS e JS pode ser uma boa ideia.

Para mais informações, siga este link ou pergunte: link

    
por 10.04.2012 / 16:11