Основным способом увеличения производительности и снижения нагрузки на веб-приложение является кэширование. Кешировать можно результаты запросов к базе, сторонним сервисам, сессионные данные активных пользователей и прочие данные, к которым необходимо часто и быстро обращаться. Если пойти дальше, то кешировать можно и ответы веб-приложения, которые могут быть доступны многим пользователям. Такой подход позволит обращаться к веб-приложению, только за уникальными данными.
Varnish Cache is a web application accelerator also known as a caching HTTP reverse proxy. You install it in front of any server that speaks HTTP and configure it to cache the contents. Varnish Cache is really, really fast. It typically speeds up delivery with a factor of 300 - 1000x, depending on your architecture.
Как сказано выше, Varnish — это реверс-прокси, который занимается ретрансляцией запросов из внешней сети на бекенд-сервера. Основной возможностью является гибкое кэширования и быстрая отдача хранимого кэша.
Varnish принимает запросы от клиента и пытается дать ответы из кэша. Если ответ не найден в кэша, то происходит перенаправление на бекенд, полученный ответ сохраняется в кэше и отдается клиенту. В случае когда необходимый ответ есть в кэше, то обычно он отдается в считанные микросекунды.
Общая архитектура:
Для django приложения возможна следующая архитектура:
Бэкенд может управлять кэшем с помощью HTTP Cache-Control заголовков (Part of RFC 2616, HTTP-кэширование от Google).
Warning! Есть несколько условий когда Varnish не кэширует, наиболее частый - использование Cookie. То есть, как только, в запросе появляются Cookie, Varnish перестает его кэшировать и начинает считать контент персонифицированным. Однако это можно обойти преобразовав необходимые Cookie в HTTP заголовки.
Об установке можно прочитать Varnish Installation.
Что почитать о Varnish
В скором времени будут статьи на тему: Varnish Configuration Language, Varnish flow, мониторинге и особенностях работы с Cookies. Уже сейчас есть статья об инструменте varnishhist.
Так же для быстрого старта можно ознакомиться со статьями:
- Кэширование с Varnish на ruhighload.com;
- Ускоряемся с Varnish на webperformance.ru.
И конечно же документация