proxy_cache_purge

jd на jdwuzhere.ru jd на jdwuzhere.ru
Вт Июл 31 18:35:00 UTC 2018



> On 31 Jul 2018, at 19:35, Gena Makhomed <gmm на csdoc.com> wrote:
> 
> On 31.07.2018 17:58, Igor A. Ippolitov wrote:
> 
>>> У бекенда нет возможности узнать, ответ бекенда по какому-то урлу
>>> еще лежит в кэше или его там уже давно нет. В результате "замещение"
>>> контента в кэше через proxy_cache_bypass может быть на самом деле
>>> не замещением старого контента, а добавлением туда нового контента
>>> и вымыванием из кэша другого контента, который реально запрашивался
>>> клиентами, что ведет к уменьшению эффективности работы кэша nginx.
> 
>> Если задаться целью избежать добавления нового контента, можно самостоятельно считать md5 от ключа кэша и проверять наличие этого файла. Подобные вычисления можно делать в njs.
> 
> Или просто самим backend`ом вычислять md5 от ключа и удалять файл
> из /var/cache/nginx/ - таким способом тоже должно все работать.

Если удалить элемент кэша вручную backend-ом, то nginx будет очень сильно негодовать в error_log, hence привет, сторонние модули.

>>> и при proxy_cache_use_stale updating; эта болванка будет отдана клиенту.
>>> а proxy_cache_lock действует только при заполнении нового элемента кэша.
> 
>> В отношении proxy_cache_use_stale updating - не могу сказать ничего конструктивного.
>> Если вас устраивает stale контент, то смысл его purge'ить?
> 
> Насколько я понимаю, если сделать purge для какого-то элемента кэша -
> то он не будет stale, а его в кэше не будет тогда вообще. Разве нет?
> 
> stale контент будет использоваться очень непродолжительное
> время, только пока обновляется этот элемент кэша с backend`а.
> 
> Кэш в nginx мне интересен прежде всего на тех сайтах,
> которые находятся / могут находиться под DDoS-атакой.
> 
> proxy_cache_lock работает только при заполнении нового элемента кэша,
> поэтому мне приходится использовать proxy_cache_use_stale updating,
> иначе на backend свалится огромное количество запросов и он упадет.
> 
> Если бы была возможность легко сделать purge для элемента кэша,
> тогда можно было бы средствами nginx выствлять большее время
> жизни для элементов кеша nginx и средствами backend`а их удалять
> как только они потеряют свою валидность.
> 
>> А если stale не устраивает, то зачем включать proxy_cache_use_stale updating?
> 
> У меня есть небольшой выбор - или использовать stale контент,
> или backend будет нерабочий из-за большого количества запросов.
> 
>> С выкидыванием proxy_cache_use_stale жизнь дополнительно упрощается тем, что proxy_cache_lock будет работать ожидаемым образом.
> 
> proxy_cache_lock и сейчас работает именно так, как это описано
> в документации к nginx, - только для новых элементов кэша.
> 
> Если убрать proxy_cache_use_stale updating тогда на backend будет идти
> огромное количество запросов и proxy_cache_lock тут никак не поможет.
> 
> -- 
> Best regards,
> Gena
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru


Подробная информация о списке рассылки nginx-ru