Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gzip и ETag
On May 8, 2013, at 10:34 AM, Maxim Dounin <mdounin@xxxxxxxxxx> 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@xxxxxxxxxx> 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 и ничего с
> ним не делал.
>
> --
> Maxim Dounin
> http://nginx.org/en/donation.html
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@xxxxxxxxx
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|