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
|