Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Gzip и ETag
Hello!
On Wed, May 08, 2013 at 11:18:31AM +0100, Anatoly Mikhailov wrote:
>
> 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 :)
Last-Modified - как работал, так и работает.
Насколько я понимаю, единственная ситуация, которая хоть как-то
затронута - это когда есть только ETag (и соответственно убирается
gzip-фильтром), а Last-Modified - нет совсем.
--
Maxim Dounin
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|