Каковы параметры для директивы gzip_proxied?
Директива gzip_proxied допускает следующие опции (не исчерпывающие):
- истекший
включает сжатие, если заголовок ответа содержит поле "Expires" со значением, которое отключает кэширование;- нет кэша
включает сжатие, если заголовок ответа содержит поле "Cache-Control" с параметром "no-cache";- нет-магазин
включает сжатие, если заголовок ответа содержит поле "Cache-Control" с параметром "no-store";- частный
включает сжатие, если заголовок ответа включает поле "Cache-Control" с параметром "private";- no_last_modified
включает сжатие, если заголовок ответа не включает поле "Last-Modified";- no_etag
включает сжатие, если заголовок ответа не включает поле "ETag";- авт
включает сжатие, если заголовок запроса содержит поле "Авторизация";
Я не вижу какой-либо разумной причины использовать большинство этих опций. Например, почему бы, если прокси-запрос содержит Authorization
заголовок или Cache-Control: private
, повлиять, хочу ли я это gzip?
Учитывая, что старые версии Nginx удаляют ETag из ответов при их разархивировании, я вижу пример использования no_etag: если у вас нет Nginx, настроенного для генерации ETag для ваших разархивированных ответов, вы можете предпочесть передать несжатый ответ с ETag, а не генерировать сжатый без ETag.
Я не могу понять другие, хотя.
Каковы предполагаемые варианты использования каждого из этих вариантов?
1 ответ
Из руководства администратора: (выделение мое)
Директива имеет ряд параметров, определяющих, какие типы прокси-запросов должны сжиматься в NGINX. Например, целесообразно сжимать ответы только на запросы, которые не будут кэшироваться на прокси-сервере. Для этого в директиве gzip_proxied есть параметры, которые инструктируют NGINX проверять поле заголовка Cache-Control в ответе и сжимать ответ, если значением является no-cache, no-store или private. Кроме того, вы должны включить параметр expired, чтобы проверить значение поля заголовка Expires. Эти параметры задаются в следующем примере вместе с параметром auth, который проверяет наличие поля заголовка авторизации (авторизованный ответ специфичен для конечного пользователя и обычно не кэшируется)
Я согласен, что не сжимать кэшируемые ответы разумно. Учтите, что основная экономия кэширования на прокси-сервере заключается в повышении производительности (времени отклика) и уменьшении времени и полосы пропускания, которые прокси-сервер тратит на запрос ресурса восходящего потока. Компромисс для получения этих преимуществ в производительности - это стоимость кэш-памяти. Вот несколько случаев, когда не нужно сжимать кэшируемые ответы:
В обычном веб-трафике многих сайтов неперсонализированные ответы (которые составляют большинство кэшируемых ответов) уже были оптимизированы с помощью таких методов, как минимизация сценариев, оптимизация размера изображения и т. Д., В процессе веб-сборки. Хотя эти статические ресурсы могут немного уменьшиться от сжатия, затраты ЦП на попытку сжать их меньше, вероятно, неэффективно используют ресурсы машины уровня прокси. Но динамически генерируемые страницы, обслуживаемые вошедшими в систему пользователями, содержащие тонны сгенерированного приложения контента, с большой вероятностью выиграют от сжатия (и, как правило, не могут быть кэшированы).
Вы настраиваете прокси перед дорогой вышестоящей службой, но вы обслуживаете ответы на другой прокси, который будет отвечать за сжатие для каждого пользовательского агента. Например, если у вас есть CDN, который отправляет несколько запросов к одному и тому же дорогостоящему восходящему ресурсу (из разных географических местоположений), и вы хотите обеспечить возможность повторного использования дорогостоящего ответа. Если CDN кэширует несжатые версии (для обслуживания как сжатых, так и несжатых пользовательских агентов), вы можете сжимать на прокси-сервере только для того, чтобы они снова распаковывались на CDN, что является просто пустой тратой оборудования и электричества с обеих сторон, чтобы уменьшить пропускную способность в часть цепи с самой высокой пропускной способностью. (Сжатие ответа gzip наиболее полезно на последней миле, чтобы получить данные ответа на телефон вашего пользователя, которые упали до одной точки сигнала при входе в метро.)
Для значительных объектов ответа могут поступать запросы (от различных пользовательских агентов, но часто через нисходящих посредников CDN) для байтовых диапазонов ресурса к пользовательским агентам, которые не поддерживают сжатие. CDN, вероятно, будет обслуживать запросы диапазона байтов из своего собственного кэша, при условии, что в его кэше уже есть несжатая версия.