Re: Вопрос Игорю

Igor Sysoev igor на sysoev.ru
Вт Дек 15 16:09:45 MSK 2009


On Tue, Dec 15, 2009 at 12:15:03AM +0300, Peter Leonov wrote:

> On 14.12.2009, at 23:50, Дмитрий Андреев <itskemko at gmail.com> wrote:
> 
> > Вы имеете в виду какие-то архитектурные ограничения или логические?  
> > Если логические, то ничего подобного: вам в той ветке рассылки из ко 
> > торой вы копипастите резонно возразили, сказав что это можно вполне  
> > обойти, если начать выдавать заголовки уже после того, как контент с 
> > жался. Если архитектурные, то стоило бы так сразу и сказать
> >
> > 14 декабря 2009 г. 21:43 пользователь Andrew Sitnikov <sitnikov at infonet.ee 
> > > написал:
> > Hello ethaniel,
> >
> > e> - content-length к gzip модулю
> > Date: Sun, 13 Dec 2009 15:44:31 +0300
> > ------------------------
> > Я не Игорь, но отвечу:
> >
> > для выдачи Content-Length при сжатии необходимо знать результат
> > сжатия на этапе выдачи заголовков, т.е. до самого сжатия; так что
> > если принесёте машину времени - будет Content-Length, а во всех
> > остальных случаях ответ отрицательный.
> >
> > Maxim Dounin
> > ------------------------
> 
> Честно говоря, для таких случаев в HTTP 1.1 придумали чанки. Не то,  
> чтобы очень элегантно, но вполне работает.
> 
> Если вас смущает шестой ие (а он, наверняка, смущает) попросите энжи  
> не сжимать для него. Все равно он настолько медленно все делает, что  
> никто и не заметит ;)
> 
> А в принципе, можно научить модуль сжатия накапливать данные до какого- 
> то предела, и только потом переходить на чанки. Но это чисто  
> спортивное упражнение, в быту не пригодится :)

Накапливать gzip уже умеет сейчас с помощью "postpone_gzipping 64k",
но до конца это не отлажено - иногда фильтры подвисают при включении
большого ответа через SSI. Сделано это было для того, чтобы уменьшить
расход памяти. Если у нас есть SSI с относительно медленными удалёнными
включениями, то gzip-фильтр инициализирует zlib после получение первых
данных. При этом zlib выделяет около 400K, которые висят без дела, пока
не придут все SSI-вставки. С postpone_gzipping можно буферизировать без
сжатия заданное количество данных, и начинать сжатие только при превышении.


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru