Gzip frente a caché de proxy inverso

Gzip frente a caché de proxy inverso

Tengo un sitio mayoritariamente estático que se ejecuta en Ruby on Rails y que utiliza el caché de proxy inverso de Varnish para guardar los accesos al backend de Rails.

El problema es que un usuario puede iniciar sesión en el sitio y, cuando lo hace, utilizamos ESI (el lado del borde incluye) para mostrar partes específicas del usuario de la página.

Usar ESI significa que tenemos que deshabilitar la compresión Gzip en el backend de Rails (usando Nginx+pasajero) o barniz no puede analizar los datos devueltos desde el backend para ejecutar el procesamiento ESI.

Mi pregunta es: ¿los beneficios de utilizar un caché de proxy inverso superan los beneficios de comprimir todo el contenido? ¿O debería intentar deshacerme de ESI por completo y tener lo mejor de ambos mundos?

Respuesta1

Podrías obtener lo mejor de ambos mundos si organizas las cosas así:

Usuario -> nginx -> Barniz -> Rieles

Active la compresión gzip desde nginx al usuario. Ése es el segmento más lento y también el más costoso. Supongo que sus instancias de nginx, Varnish y Rails son locales entre sí. Su ancho de banda local debería ser más que suficiente. Además, no tiene mucho sentido hacer gzip solo para descomprimirlo y ensamblar el ESI.

Respuesta2

Si el ancho de banda no es un problema y los tiempos de carga son aceptables sin gzip, definitivamente debes dejar gzip desactivado.

Gzipping consume muchos recursos de la CPU. Entonces, si está más preocupado por la CPU que por el ancho de banda, si el sitio se carga lo suficientemente rápido y si ESI es de gran ayuda para usted, entonces definitivamente el sistema de caché de proxy inverso tiene más beneficios que comprimir las respuestas http.

En otras situaciones, donde el ancho de banda es crítico, gzip puede ser más importante, pero no parece ser el caso aquí.

Finalmente, algunos proxies inversos pueden realizar el gzipping. Esta es una gran posibilidad, porque los servidores proxy inversos generalmente no usan mucha CPU (si están en un servidor separado). Esto le ahorra al backend muchos ciclos de CPU y también ahorra ancho de banda, pero por el momento, y si no recuerdo mal, Varnish no admite gzipping.

información relacionada