Varnish 3 выполняет gunzip, даже если весь трубопровод gzipped

Я рефакторинг своего Varnish VCL и не могу понять это одно.

Varnish 3.0 изначально поддерживает GZIP-контент, и, по-видимому, делает это правильно. Смотрите также: https://stackoverflow.com/a/12962493/35434

Тем не менее, согласно varnishlog, Varnish по-прежнему выполняет шаг зазарядки, даже если клиент запрашивает сжатый контент, а серверная часть отвечает сжатым содержимым. Согласно документам Varnish, по умолчанию Varnish имеет значение do_gzip = true, а также сохраняет сжатые объекты кэша. Итак, почему пистолет?

Вот соответствующие записи в журнале:

11 RxURL        c /javascripts/general.js
11 RxHeader     c Accept-Encoding: deflate, gzip
11 VCL_call     c fetch
13 TxHeader     b Accept-Encoding: gzip
13 RxHeader     b Content-Encoding: gzip
13 RxHeader     b Content-Type: application/javascript
11 Gzip         c u F - 1554 4476 80 80 12365
11 VCL_call     c deliver
11 TxHeader     c Content-Encoding: gzip

Как видите, весь конвейер поддерживает gzip, но Varnish выполняет gunzip во время vcl_fetch. Я предполагаю, что он хранит сжатые объекты, и, как вы можете видеть, он также доставляет сжатые объекты.

После этого запроса varnishstat показывает, что произошла операция gunzip:

$ varnishstat -1 | grep zip
n_gzip                       0         0.00 Gzip operations
n_gunzip                     1         0.00 Gunzip operations

Примечание: мой VCL вообще не имеет конфигурации gzip, и я ничего не делаю с телом объекта. Я полагаюсь на разумные значения по умолчанию, поэтому я не показываю VCL.

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

1 ответ

Можете ли вы установить это в свой раздел vcl_fetch()

set beresp.do_gunzip = false;

Это должно остановить лак, делая gzip.

Другие вопросы по тегам