Tengo un problema bastante extraño. En mi entorno, estamos ejecutando un clúster de carga equilibrada de 8 servidores apache con un servidor MySQL maestro-maestro. Frente a apache tenemos Barniz en la capa de caché.
Llevamos varias semanas ejecutando Apache mod_pagespeed y, en su mayor parte, ha funcionado muy bien. El problema surge cuando realizamos nuevas actualizaciones de código desde Git, y / y todos los activos de JS / CSS cambian.
Básicamente, el problema parece ser doble. Uno, después de la inserción del código, generalmente aprovechamos la oportunidad para vaciar el barniz, reiniciar apache y reiniciar el barniz. Al hacer esto, todos los archivos combinados / minificados mod_pagespeed se borran asegurando que todos los nuevos activos JS / CSS estén actualizados. El problema es que, al hacer esto, los nombres de archivo que mod_pagespeed crean cambios, pero los archivos antiguos (aparecen) aún se almacenan en caché para muchas personas del lado del cliente, lo que conduce a resultados muy inesperados. Sin embargo, si no reiniciamos apache, los cambios en los archivos pueden aparecer o no en el lado del cliente debido a los activos minificados en caché.
La solución simple es deshabilitar mod_pagespeed, sin embargo, preferiría no hacerlo, ya que ha tenido un impacto bastante grande en el rendimiento.
Siento que debe haber una mejor manera de lidiar con las inconsistencias en la memoria caché entre el cliente y el servidor para evitar que las personas hagan grandes esfuerzos o realicen una gran cantidad de actualizaciones de página para ver una página de trabajo.
Puedo proporcionar fragmentos de configuración si alguien los necesita.
Si desea inspeccionar el sitio, la fuente, los encabezados o cualquier otra cosa, pruebe las siguientes direcciones:
¡Gracias por adelantado!
fuente
Respuestas:
Solo para asegurarme de que entiendo el problema, parece que está modificando archivos que se sirvieron hasta mod_pagespeed desde el barniz con encabezados caducados que lo mantienen en caché más allá cuando se ha cambiado en el back-end.
Tienes un par de opciones aquí si ese es el caso. Puede configurar su backend (barniz) para enviar encabezados de caducidad más cortos. O puede configurar sus activos no almacenados en caché para que se vinculen a las versiones almacenadas en caché con números de parche que puede incrementar cuando realice cambios. Entonces se convierten en:
http://site.com/asset.gif?p=930024982afb191
También parece que hay otros botones que puede modificar en mod_pagespeed para cambiar los tiempos de caducidad de ciertos archivos:
http://code.google.com/speed/page-speed/docs/filter-cache-extend.html
También en relación con el lado del cliente, aquí hay más información sobre cómo actúan que ayudará a configurar tanto barniz como mod_pagespeed:
http://code.google.com/speed/page-speed/docs/filter-cache-extend.html
fuente
Escribiste sobre el lavado de Barniz. En realidad, hay dos formas diferentes de hacerlo:
En su caso, puede ser una buena idea prohibir todos los archivos HTML, CSS y JS.
Para obtener más información, siga este enlace o pregunte: https://www.varnish-cache.org/docs/3.0/tutorial/purging.html
fuente