ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug ? 304 status - Cache-Control


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Bug ? 304 status - Cache-Control
  • From: "S.A.N" <nginx-forum@xxxxxxxx>
  • Date: Fri, 03 Jan 2014 16:04:03 -0500
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=selenium.jlkhosting.com; s=x; h=Date:Sender:From:References:In-Reply-To:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=pDA14AcleB2O5BMu9YXBek5iRR4lErcQLE0Os37huDk=; b=VRsAE+5GDrEZ9TnJjGinWO8V3DIDsXx1By/zu4aP9TG5EsgYlts/HEDgY256rsgMsUrTGkeKbQsYYO0zaLz1hrJm3EAffyZgageNWgpAXoPll2GV+2JwsW+Qcj37nYeY3HpcRi93YvMEpW4p3VhyBxHhjVU+HXM8C5R969ru8xc=;
  • In-reply-to: <EAADEFEC-91DE-4DF2-90FC-E4050689D000@sonru.com>
  • References: <EAADEFEC-91DE-4DF2-90FC-E4050689D000@sonru.com>

> поддержка E-Tag в Nginx была всегда, как минимум в виде трансляции
> заголовка с бэк-енда. С версии 1.3.3 Nginx научился ее
> включать/выключать
> http://nginx.org/en/docs/http/ngx_http_core_module.html#etag
> 
> Не забывайте, что еще есть разница между weak/strong E-Tag,
> согласно RFC
> (http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.3.3) 
> Nginx откусывает E-Tag при некоторых условиях, например, при
> включенном gzip,
> когда body (и следовательно, E-Tag) передается модифицированным.
> 
> С другой стороны, Last-Modified не изменяется gzip-сжатием
> и вы можете использовать его для реализации Conditional-Get.

Да, я знаю, но речь шла про отсутствия возможности ревалидации Nginx кеша по
If-None-Match (ETag)

Последняя версия Nginx 1.5.8, деректива fastcgi_cache_revalidate on,
включает ревалидацию только по If-Modified-Since (Last-Modified), в будущих
версиях обещают добавить возможность ревалидации по If-None-Match (ETag)

Насчет weak ETag, наш бекенд отдает уже сжатый ответ, в конфиге Nginx есть
директива gunzip on, которая отдает не сжатый ответ для клиентов которые не
поддерживают сжатые ответы. Так же этот модуль удаляет хедер ETag, пробовали
использовать weak ETag (например - W/"?."), результат тот же, Nginx удаляет
ETag, возможно сейчас что-то поменялось, надо будет проверить на новых
версиях Nginx.

Насчет ревалидации кеша по If-Modified-Since (Last-Modified), это не просто
если на сайте миллионы страниц, потому что придется хранить для каждой
страницы последнюю дату модификации чтобы сравнивать с датой, которая пришла
от клиент в хедере If-Modified-Since, проблема даже не в кол-ве записей
Memcache это выдержит, проблема в том что эти записи надо как-то обновлять,
т.е после операций  UPDATE, DELETE, INSERT в СУБД, надо обновить все
Last-Modified страниц которые были изменены этими запросами.
Это означает, что ещё надо хранить связи между страницами и рекурсивно
обновлять эти даты для всех страниц, так как Memcache не подтерживает
множественных апдейтов, на каждое изменения надо будет отдельный запрос в
Memcache, в общем выходит очень не эффективная работа, с ETag все намного
красивей и проще, если будет интересно могу рассказать подробней.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,245951,245988#msg-245988

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.