Кэш-память Varnish: повышение производительности для динамических веб-сайтов

Для динамичных веб-проектов сложные макеты и растущее число пользователей значительно снижают производительность. Резервные прокси позволяют сократить эти потери и разгрузить веб-серверы, отвечая на запросы сервера. Резервные прокси-серверы работают путем хранения в своем кэше запрашиваемого материала — статического контента, например, картинок, а также часто запрашиваемых динамических страниц. Одним из очень популярных программ для кэширования является Varnish. В отличие от многих своих конкурентов, Varnish с самого начала планировался как веб-ускоритель. Установка и настройка кэша varnish требует, чтобы веб-серверы обладали всеми правами root и работали под управлением операционных систем Unix.

Как работает кэш Varnish

В цепочке процессов, происходящих при запросах данных, Varnish располагается непосредственно перед веб-сервером, на котором находится нужный контент. Хотя запросы страниц по-прежнему первоначально обрабатываются исходным сервером, именно прокси-сервер Varnish сохраняет запрос и требуемое содержимое. Дальнейшие запросы такого рода обрабатываются путем загрузки нужных данных непосредственно из кэша Varnish. Это означает, что программное обеспечение способно кэшировать все данные, находящиеся в рабочей памяти, и позволяет операционной системе определять, что должно быть сохранено на жестком диске сервера. Это помогает пользователям избежать одновременного сохранения данных на жестком диске и в кэше.

Varnish также функционирует как балансировщик нагрузки. С помощью процедуры Round Robin входящие запросы клиентов оцениваются как отдельные рабочие потоки, которые последовательно обрабатываются кэшем Varnish. Фиксированный предел определяет, сколько одновременно активных потоков может быть обработано. Как только этот порог достигнут, все остальные запросы попадают в очередь, где ожидают обработки. Входящие соединения блокируются только после достижения лимита очереди.

Настройка резервных прокси-серверов Varnish в основном контролируется с помощью языка конфигурации Varnish (VCL). Это делает возможным написание хуков (здесь: техника, позволяющая пользователям интегрировать посторонний код в приложение). После загрузки сценария VCL он переводится на язык программирования C и компилируется в библиотеку программ; инструкции VCL связываются с кэшем Varnish. Если применяемая CMS, программное обеспечение для электронной коммерции или веб-приложение поддерживает язык разметки ESI (Edge Side Includes), Varnish также может передавать полностью кэшированные страницы. Язык разметки генерирует в HTML-файлах теги ESI, которые используются для маркировки динамического содержимого. Во время клиентских запросов Varnish Cache способен распознавать эти теги и перезагружать соответствующий им контент.

Плюсы и минусы хостинга Varnish

Во многих случаях оптимизация специализированных хостинг-решений с помощью кэша Varnish может стать ответом на вызовы, вызванные растущей сложностью и увеличением числа пользователей вашего веб-проекта. Однако это не означает, что данное программное обеспечение лучше всего подходит для всех веб-представительств. Взгляните на плюсы и минусы хостинга Varnish в обзоре, который мы подготовили ниже:

Преимущества: Недостатки:
✔ Более быстрое время загрузки благодаря кэшированию в оперативной памяти ✘ Отсутствие существенной оптимизации для систем, не поддерживающих ESI
✔ Облегчение работы веб-сервера ✘ Увеличение сложности и количества ошибок 
✔ Поддержка ESI ✘ Не поддерживает TLS/SSL (HTTPS)
✔ Операционная система экспортирует содержимое на жесткий диск сервера  ✘ Требовательность к установке и конфигурации
✔ Распределение нагрузки на основе процедуры Round Robin ✘ Только для систем Unix
✔ Гибкие возможности конфигурирования с помощью VCL

Приведенное выше сравнение еще раз иллюстрирует, что хостинг Varnish является жизнеспособной альтернативой функциям кэширования для клиентов и веб-серверов только при работе с веб-приложениями, поддерживающими ESI. Кроме того, установка и настройка Varnish Cache с тегами ESI может оказаться обременительной. А учитывая, что Varnish не поддерживает соединения TLS/SSL, вам понадобится дополнительный прокси-сервер для безопасной передачи данных.

Какими бы неприятными ни казались некоторые из этих пунктов, правильно настроенный Varnish Cache с ESI-тегами может ускорить работу ваших веб-проектов так, как не могут обычные методы кэширования. Это значительно сокращает время загрузки сайта для посетителей, помогая вам в долгосрочной перспективе достичь более высокого общего коэффициента конверсии. Эти усилия также вознаграждаются лучшим рейтингом в поисковых системах и значительно разгружают веб-сервер, который больше не отвечает за обработку всех входящих соединений. Хостинг Varnish особенно популярен среди тех, кто управляет интернет-магазинами и сайтами с разнообразным контентом.

Установка Varnish Cache

Для установки Varnish Cache необходимы административные права используемой Unix-системы. Кроме того, перед началом работы необходимо установить веб-сервер, расположенный ниже по течению от Varnish Cache. В следующих инструкциях описаны необходимые шаги по установке и настройке varnish. Следующий пример был выполнен на операционной системе Ubuntu и веб-сервере Apache:

1. Первый шаг:

По умолчанию Varnish включен в управление программными пакетами Ubuntu, но это не всегда последняя версия. По этой причине Varnish дает пользователям возможность получить доступ к своему онлайн-каталогу при установке программы. Вот как открыть каталог и добавить его в качестве источника:

sudo apt-get install apt-transport-https
sudo curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
sudo echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.1" >> /etc/apt/sources.list.d/varnish-cache.list 

2. Второй шаг:

Для следующего шага перечитайте список пакетов и установите Varnish:

sudo apt-get update
sudo apt-get install varnish

3. Третий шаг:

На данном этапе файл Varnish должен быть настроен так, чтобы программа «знала», где она может найти веб-контент:

sudo nano /etc/default/varnish

Измените записи в разделе ‘DAEMON_OPTS’ следующим образом:

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080
DAEMON_OPTS="-a :80 
-T localhost:6082 
-f /etc/varnish/default.vcl 
-S /etc/varnish/secret 
-s malloc,256m"

4. Четвертый шаг:

Сохраните изменения и откройте файл default.vlc:

sudo nano /etc/varnish/default.vlc

Укажите порт 8080 в качестве источника для контента, созданного с помощью Varnish:

backend default {
.host = "127.0.0.1";
.port = "8080";
}

5. Пятый шаг:

Наконец, также настройте порт 8080 (по умолчанию 80) для Apache. Откройте соответствующий файл конфигурации портов Apache:

sudo nano /etc/apache2/ports.conf

Измените номер порта для записей ‘NameVirtualHost’ и ‘Listen’ следующим образом:

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

6. Шестой шаг:

Для завершения установки настройте файл по умолчанию (etc/apache2/sites-available/default) на запись VirtualHost, используя тот же метод, что и в шаге 5.

7. Седьмой шаг:

Перезапустите сервер и Varnish для завершения установки:

sudo service apache2 restart
sudo service varnish restart

Чтобы найти дополнительные инструкции по установке Varnish на другие операционные системы на базе Unix, а также программный код программы, перейдите в раздел загрузки на официальном сайте Varnish.

Оцените статью
cdelat.ru
Добавить комментарий