Рассмотрим следующую настройку сервера в сети:
В этом примере оба прокси-сервера являются серверами Nginx.
Если целью является сокращение времени загрузки для клиента, следует ли использовать сжатие на серверах Nginx (используя gzip
директива) в точке A или точке B, или в обоих случаях? Есть ли какой-нибудь теоретический способ определить это без простого тестирования.
Изменить: стоит ли учитывать, что внутри сети очень высокая пропускная способность, но за пределами следующей работы (например, соединение A) менее гарантирована быстрая пропускная способность.
Предполагая, что вы действительно говорите о конвейере данных, если вы используете gzip раньше, чем позже, остальная часть пути просто переместит более компактные данные.
Если вы заархивируете оба места, более поздняя точка должен увидеть, что трафик уже сжат, и больше не делать этого.
Но если сжатие включено в обоих местах, но они не используют одно и то же сжатие, последняя точка может не распознавать другой алгоритм, и поэтому попробуйте выполнить сжатие с помощью нового алгоритма. Обычно это требует больше времени, потому что сжатые данные обычно не так сжимаемы, как несжатые данные, а дополнительное сжатие дает мало, если вообще дает (и может усугубить ситуацию). Кроме того, многие клиенты не ожидают результатов с двойным сжатием и могут просто отмените второй уровень сжатия, а не оба.
Кроме того, если ваш интерфейсный сервер просматривает контент, предоставляемый сервером контента, и настраивает его, тогда ему потребуется распаковать все, что сервер контента отправляет в сжатом виде. Существуют алгоритмы сжатия для такого рода случаев использования, например сжатие LZO. Я особо не изучал эти алгоритмы, поскольку в основном сжимаю данные в состоянии покоя и данные, перемещающиеся из двух или более часовых поясов.
Чтобы прояснить этот дополнительный случай: если контент, предоставляемый сервером контента, передается клиенту в виде отдельных файлов из всего, что предоставляет интерфейс, вероятно, для внешнего сервера не имеет значения, если эти данные уже сжаты. Если, с другой стороны, вы добавляете начало веб-страницы, а затем добавляете после него конец веб-страницы, то раздельное сжатие того, что находится между этим началом и этим концом, просто не работает. Я не рассматривал этот случай, потому что предполагал, что вы спрашиваете о двух случаях, когда у вас есть рабочий код для обработки, но не могли понять, как проводить сравнительный анализ, поскольку вы находитесь на своем сайте, а клиент - нет.