Назад | Перейти на главную страницу

Gzip против кеша обратного прокси

У меня есть в основном статический сайт, работающий на Ruby on Rails, который использует кеш обратного прокси Varnish для экономии обращений к бэкэнду Rails.

Проблема в том, что пользователь может войти на сайт, и когда они это сделают, мы используем ESI (включая крайние стороны), чтобы показать определенные пользователю части страницы.

Использование ESI означает, что мы должны отключить сжатие Gzip на бэкэнде Rails (с использованием Nginx + пассажира), иначе varnish не может проанализировать данные, возвращаемые бэкэндом, для запуска обработки ESI.

У меня вопрос: перевешивают ли преимущества использования кэша обратного прокси-сервера преимущества сжатия всего вашего контента? Или я должен попытаться полностью избавиться от ESI и получить лучшее из обоих миров?

Вы можете получить лучшее из обоих миров, если расположите вещи так:

Пользователь -> nginx -> Varnish -> Rails

Включите сжатие gzip с nginx для пользователя. Это самый медленный и самый дорогой сегмент. Я предполагаю, что ваши экземпляры nginx, Varnish и Rails являются локальными по отношению друг к другу. Ваша локальная пропускная способность должна быть более чем достаточной. Кроме того, нет смысла использовать gzip только для распаковки и сборки ESI.

Если пропускная способность не является проблемой, и время загрузки приемлемо без gzip, вам обязательно следует оставить gzip выключенным.

Gzipping требует много ресурсов ЦП. Итак, если вас больше беспокоит ЦП, чем пропускная способность, если сайт загружается достаточно быстро и если ESI вам очень помогает, то определенно система обратного прокси-кеширования имеет больше преимуществ, чем сжатие HTTP-ответов.

В других ситуациях, когда критически важна пропускная способность, gzip может быть более важным, но, похоже, здесь это не так.

Наконец, сжатие может выполняться некоторыми обратными прокси. Это отличная возможность, потому что обратные прокси-серверы обычно не используют много ЦП (если они находятся на отдельном сервере). Это экономит бэкэнду много циклов процессора, а также экономит пропускную способность, но на данный момент, если я правильно помню, Varnish не поддерживает gzip-архивирование.