Rendimiento web: ¿cómo funciona Varnish?

Explicando el barniz de una manera no técnica :

Imagine un sistema como MacDonald’s (restaurantes). Entras, haces un pedido en el mostrador. La persona en el mostrador verifica si su pedido puede ser ensamblado y entregado a usted, si no hay hamburguesas preparadas, la persona en el mostrador debe hacer un pedido al cocinero en el back-end. Si las hamburguesas que ordenó ya están hechas, se las pueden servir directamente de la persona en el mostrador con menos retraso ya que las hamburguesas ya están cocidas.

Volviendo a la pregunta original , Varnish representa a la persona en el mostrador y su servidor web (por ejemplo, apache) es el cocinero en el back-end. Un visitante visita su sitio, él / ella solicita ver una página (hace un pedido), Varnish comprueba si esta página ya está en caché (si las hamburguesas ya están cocinadas), en caso afirmativo, su visitante recibe más rápidamente directamente de Varnish (la persona en el mostrador). Si la página no está en caché, Varnish hará una solicitud a su servidor para generar la página (la persona en el mostrador hace un pedido al cocinero en el servidor para crear las hamburguesas) cuando su visitante esté listo. ver la página (obtener el pedido).

Puntos importantes para mantener, el barniz servirá la misma hamburguesa varias veces. Entonces, el cocinero en el back-end (por ejemplo, apache) solo creará una hamburguesa una vez, después de eso siempre se la sirve a la persona en el mostrador. Cuando la receta de una hamburguesa ha cambiado (por ejemplo, una actualización en su artículo) o la hamburguesa ha expirado (por ejemplo, encabezados de vencimiento), el cocinero en el back-end producirá la hamburguesa nuevamente (su página).

Hay una publicación interesante hoy (2/1/11) sobre “Una guía práctica para barnizar” en el Blog de desarrollo de hechos – http://devblog.factual.com/pract… .

(revelar, yo trabajo aquí)

Aquí está la sección de apertura:

Varnish es un acelerador http de código abierto y de alto rendimiento que se encuentra frente a una pila web y almacena en caché las páginas. Esta capa de almacenamiento en caché es muy configurable y puede usarse tanto para contenido estático como dinámico.

Una gran cosa acerca de Varnish es que puede mejorar el rendimiento de su sitio web sin requerir ningún cambio de código. Si no has oído hablar de Varnish (o has oído hablar de él, pero no lo has usado), sigue leyendo. Agregar barniz a su pila puede ser completamente no invasivo, pero si modifica su pila para jugar junto con algunas de las características más avanzadas del barniz, podrá aumentar el rendimiento en órdenes de magnitud.

Algunas de las compañías de alto perfil que usan Varnish incluyen: Twitter, Facebook, Heroku y LinkedIn.

Aquí hay una respuesta simplificada a través del blog de mi empresa: Varnish es un proxy inverso HTTP en caché. Para una solicitud web típica a un artículo de blog recientemente publicado, un navegador envía una solicitud al servidor web. El contenido del artículo se extrae de una base de datos, se combina con una plantilla, se procesa de varias maneras y se devuelve al servidor web, que envía el resultado final al navegador.

La próxima vez que un usuario solicite el mismo artículo, se produce exactamente el mismo proceso. Pero, si agregamos la caché HTTP Varnish frente al servidor web, sucede algo diferente. Esta vez, la solicitud inicial va a Barniz. Si es la primera vez que Varnish ha visto una solicitud de este artículo, simplemente lo pasa al servidor web como antes. Pero cuando el servidor web envíe la respuesta, Varnish lo recordará. Almacena la página en la memoria del servidor. La próxima vez que llegue una solicitud para ese artículo, Varnish simplemente envía la copia que ya tiene en la memoria. El servidor web, la base de datos y el intérprete de código no están involucrados en absoluto.

Varnish funciona según un principio simple: es una tienda de valores clave. Asocia una porción de datos con una clave, que se utiliza para encontrar esos datos. En muchos lenguajes de programación, este tipo de estructura de datos de valores clave se denomina diccionario, porque al igual que el diccionario de palabras familiar, se utiliza una clave (la palabra) para buscar algunos datos (la definición). En el caso de Varnish, la clave es una URL y los datos son la página web. Si Varnish recibe una clave para la que no tiene datos, simplemente pasa la clave al servidor web, que genera las páginas.

Enviar una página desde el caché es mucho más rápido que generar la página de nuevo: qué tan rápido depende de varios factores, pero no es inusual que sea 1,000 veces más rápido. Y debido a que el servidor tiene menos trabajo por hacer, sus recursos pueden usarse de manera más eficiente.

Espero que esto ayude.