Re: Gzip и ETag

Anatoly Mikhailov anatoly at sonru.com
Wed May 8 10:33:55 UTC 2013


On May 8, 2013, at 11:18 AM, Anatoly Mikhailov <anatoly at sonru.com> wrote:

> 
> On May 8, 2013, at 10:34 AM, Maxim Dounin <mdounin at mdounin.ru> wrote:
> 
>> Hello!
>> 
>> On Wed, May 08, 2013 at 09:31:32AM +0100, Anatoly Mikhailov wrote:
>> 
>>> 
>>> On May 8, 2013, at 12:23 AM, Maxim Dounin <mdounin at mdounin.ru> wrote:
>>> 
>>>> Hello!
>>>> 
>>>> On Tue, May 07, 2013 at 11:32:07PM +0100, Anatoly Mikhailov wrote:
>>>> 
>>>>> Меня настораживает интересная закономерность, включая/отключая gzip в конфигурации Nginx,
>>>>> ETag заголовок пропадает/появляется соответственно в прокированном ответе от бэкэнда (Unicorn).
>>>>> Проще говоря, при gzip off ответ всегда приходит с ETag, все остальные параметры на это не влияют.
>>>>> 
>>>>> Бэкнэнд, если слушает порт, то легко убедиться, что он добавляет заголовок ETag к каждому ответу,
>>>>> и чтобы проксировать ETag заголовок через upstream приходится выключать gzip.
>>>>> Если я правильно понимаю, то сжатый ответ не может содержать некоторые заголовки?
>>>> 
>>>> При любых изменениях тела ответа, в том числе - модулем gzip, 
>>>> ETag'и из ответа убираются.  Это сделано, т.к. стандарт требует, 
>>>> чтобы strong etags у ответов совпадали тогда и только тогда, когда 
>>>> ответы совпадают до байта.  (А если ответы будет не совпадать при 
>>>> одинаковых ETag'ах - это в свою очередь чревато получением 
>>>> неверного суммарного ответа при комбинировании нескольких ответов 
>>>> на range-запросы.)  Почитать подробности можно тут (и далее по 
>>>> ссылкам):
>>>> 
>>>> http://tools.ietf.org/html/rfc2616#section-3.11
>>>> 
>>> 
>>> Ага, спасибо, более менее разобрался. Все таки, есть вариант оставлять ETag, пришедший от бэкэнда,
>>> может в сочетании с Last-Modified?
>> 
>> В чём цель?
> 
> Цель всегда одна - UI responsiveness, чем быстрее пользователь получит данные (идеально - из браузерного кэша),
> тем меньше нагрузки будет на рендеринг в браузере и можно отдать пустое тело запроса от бэкэнда (fresh_when/stale в Rack)
> 
> E-Tag, Last-Modified - весьма удобные инструменты, которые неожиданно перестали работать как раз после Nginx 1.3.3 :)
> 
>> 
>>> Кстати, до реализации SPDY все было точно так же (ETag не проксировался при Gzip)?
>> 
>> Поддержка entity tags не имеет отношения к spdy, и появилась в 
>> nginx 1.3.3.  До этого nginx не знал про заголовок ETag и ничего с 
>> ним не делал.

Максим, а есть возможность сказать nginx, чтобы он забыл про ETag и опять с ним ничего не делал (отдавал в backend как и до 1.3.3)?

>> 
>> -- 
>> Maxim Dounin
>> http://nginx.org/en/donation.html
>> 
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



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