Re: proxy cache и gzip
Gena Makhomed
gmm at csdoc.com
Thu Aug 2 11:06:12 UTC 2012
On 02.08.2012 13:28, Maxim Dounin wrote:
>> Nginx установлен как кеширующий прокcи
>> перед apache. На апаче включен gzip, на nginx
>> тоже. Все ок, если не включать
>> кеширование, но если включить,
>> некоторые браузеры не могут прочитать
>> страницу, например парсеры/валидаторы
>> и т.д.
>> С выключением gzip на бэкэнде проблема,
>> естественно, решается, но размер кеша
>> существенно увеличивается.
>> Если же включить gzip на бэкэнде, но
>> выключить в nginx, то кешируется сжатый
>> ответ, но отдается без сжатия.
>> Возможно ли и место на диске сохранить,
>> и отдавать сжатый ответ, понятный для
>> парсеров?
> http://mdounin.ru/hg/ngx_http_gunzip_filter_module
> http://mdounin.ru/hg/ngx_http_gunzip_filter_module/file/tip/README
> http://mdounin.ru/files/ngx_http_gunzip_filter_module-0.4.tar.gz
>
> При проксировании на бекенд с кешированием имеет смысл добавить в
> конфиг
>
> proxy_set_header Accept-Encoding "gzip";
>
> дабы бекенд всегда жал ответы (вне зависимости от того,
> поддерживает ли клиент gzip), и соответственно в кеш они попадали
> сжатые. Ну и не забыть включить собственно gunzip, дабы для
> клиентов, не поддерживающих gzip, ответы разжимались.
а почему gunzip_filter_module не включен в состав nginx?
разве у этого модуля (или у этого алгоритма)
есть какие-то существенные недостатки?
(кроме того что ответ сжимает backend)
на первый и на второй взгляд, выиграш от хранения
сжатых ответов в кеше будет практически всегда,
почти на любом сервере:
1. процессоры в серверах сейчас очень мощные стоят
2. процесс gunzip занимает меньше времени чем gzip
3. почти все клиенты понимают сжатый ответ от сервера,
так что сжатый ответ из кеша будет почти всегда посылаться
в ответ клиенту "as is" и производительность только вырастет
(уменьшится latency ответа, уменьшится нагрузка на CPU/HDD/RAM)
4. будет более эффективное использование файлового кеша
5. дисковая подсистема уже давно является узким местом,
даже если это SSD - они все еще очень небольшого объема
сейчас же - в кеше хранится не сжатый ответ,
и на каждый запрос клиента - nginx "на лету"
его сжимает, очень неэффективно используя
при этом процессор, память и место на диске.
--
Best regards,
Gena
Подробная информация о списке рассылки nginx-ru