Welcome! Log In Create A New Profile

Advanced

Re: Cache revalidation using If-None-Match

Gena Makhomed
July 17, 2014 02:08PM
On 17.07.2014 15:17, S.A.N wrote:

> if ($upstream_status = 304) {
> set no_cache = 1;
> }
>
> fastcgi_no_cache $no_cache;
>
> Ещё как вариант, Nginx вообще не нужно удалять валидаторы из запроса, они
> всегда должны уходить на бекенд, при получении статуса 304, когда нет файла
> кеша Nginx, но в заголовке ответа указано что можно кешировать в публичном
> кеше (не private), только в этом случаи Nginx должен сделать повторный
> запрос к бекенду без валидаторов для получения нового контента со статусом
> 200.

Обычно nginx ставят для того, чтобы он уменьшал,
а не увеличивал количество запросов к backend`у.

> Но можно и не делать повторный запрос, со временем придет юзер без
> валидаторов и бекенд отдаст статус 200, в общем Nginx просто надо научить
> понимать что заголовки Cache-Control в 304 статусе, не означают что нужно
> кешировать ответ 304, они означают что нужно использовать прежний
> закешированый ответ 200, по сути fastcgi_no_cache который я написал выше эту
> проблему так и решает.

Запрос с валидаторами может придти и тогда,
когда в кеше nginx предыдущего варианта ответа уже нет.

И тогда на backend пойдет весь поток таких запросов с валидаторами,
на которые backend будет вынужден каждый раз сам отвечать 304 статусом.

В существующем сейчас варианте - на backend приходит всего один запрос.
Что меньше, чем количество запросов как в первом так и во втором случае.

> Я понимаю такая схема сложней для Nginx и ему проще просто всегда удалять
> валидаторы если нет файла кеша, но я же смотрю с точки зрения бекенда, ему
> лучше если валидаторы всегда приходят.

Если посмотреть на ситуацию с точки зрения производительности -
то лучше не дергать backend на каждый клиентский запрос,
а просто делегировать nginx`у полномочия по возврату
статуса 304 в ответ на такие запросы клиентов.

Когда backend понимает, что кеш у nginx устарел
- он обновляет кеш nginx всего одним запросом.

А в коммерческой версии - там еще лучше, одним запросом
удаляет из кеша устаревший ответ, если он там есть.

Или просто использовать вариант с естественным
устареванием кеша по таймауту fastcgi_cache_valid

В результате: минимальный overhead, максимальная производительность.

--
Best regards,
Gena

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Cache revalidation using If-None-Match

S.A.N June 26, 2014 10:36AM

Re: Cache revalidation using If-None-Match

Anatoly Mikhailov June 26, 2014 04:28PM

Re: Cache revalidation using If-None-Match

S.A.N July 14, 2014 11:37PM

Re: Cache revalidation using If-None-Match

Maxim Dounin July 15, 2014 06:54PM

Re: Cache revalidation using If-None-Match

S.A.N July 15, 2014 08:09PM

Re: Cache revalidation using If-None-Match

S.A.N July 15, 2014 08:44PM

Re: Cache revalidation using If-None-Match

Gena Makhomed July 17, 2014 05:50AM

Re: Cache revalidation using If-None-Match

S.A.N July 17, 2014 09:46AM

Re: Cache revalidation using If-None-Match

Gena Makhomed July 17, 2014 02:46PM

Re: Cache revalidation using If-None-Match

S.A.N July 17, 2014 06:23PM

Re: Cache revalidation using If-None-Match

Gena Makhomed July 18, 2014 07:16AM

Re: Cache revalidation using If-None-Match

S.A.N July 18, 2014 01:01PM

Re: Cache revalidation using If-None-Match

Gena Makhomed July 17, 2014 07:36AM

Re: Cache revalidation using If-None-Match

S.A.N April 01, 2015 12:04PM

Re: Cache revalidation using If-None-Match

Валентин Бартенев April 02, 2015 03:14AM

Re: Cache revalidation using If-None-Match

Gena Makhomed July 17, 2014 05:10AM

Re: Cache revalidation using If-None-Match

S.A.N July 17, 2014 08:17AM

Re: Cache revalidation using If-None-Match

Gena Makhomed July 17, 2014 02:08PM

Re: Cache revalidation using If-None-Match

S.A.N July 17, 2014 04:48PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 105
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready