"always" parameter in "gzip_static" directive

Maxim Dounin mdounin at mdounin.ru
Wed Sep 12 14:02:55 UTC 2012


Hello!

On Wed, Sep 12, 2012 at 03:58:52PM +0300, Gena Makhomed wrote:

> On 10.09.2012 19:48, in nginx-devel Maxim Dounin wrote:
> 
> > Gzip static: "always" parameter in "gzip_static" directive.
> > With "always" gzip static returns gzipped content in all cases,
> > without checking if client supports it.
> > It is useful if there are no uncompressed files on disk anyway.
> 
> если клиент говорит что не понимает compressed ответы
> и на диске нет uncompressed files - почему в этом случае
> нельзя отдать uncompressed ответ, пропустив compressed files
> перед отдачей клиенту через ngx_http_gunzip_filter_module ?

Можно - для этого достаточно включить gunzip.  Делать подобное 
включение автоматическим - это, с моей точки зрения, типичный 
случай layering violation.

> так было бы более корректно с точки зрения RFC, (?)
> потому что обычно, если клиент говорит что не понимает
> compressed ответ - он его действительно не понимает...
> 
> тогда вообще не надо было бы добавлять новый параметр "always"
> к директиве "gzip_static" и nginx всегда работал бы корректно.

С точки зрения RFC - заголовок Content-Encoding говорит о 
encoding'е возвращаемого документа (entity).  Возврат разных 
документов (с разным encoding'ом) в зависимости от того, что 
клиент указывает в заголовке Accept-Encoding, суть один из 
возможных вариантов реакции на предпочтения клиентов.  Если других 
вариатов документа нет - никто не машет вернуть документ в том 
виде, в котором есть.

Часто встречающимся примером аналогичного поведения является 
возврат документа на том языке, на котором он есть, без перевода 
на один из языков, указанных клиентом в заголовке Accept-Language.  
Или возврат документов в том формате (и с тем Content-Type), в 
котором они лежат на сервер, вне зависимости от полученного от 
клиента заголовка Accept.

Подробнее о всём этом с точки зрения RFC можно прочитать 
собственно в самом RFC 2616:

http://tools.ietf.org/html/rfc2616#section-12

Maxim Dounin



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