proxy_cache_purge

Gena Makhomed gmm на csdoc.com
Вт Июл 31 16:35:52 UTC 2018


On 31.07.2018 17:58, Igor A. Ippolitov wrote:

>> У бекенда нет возможности узнать, ответ бекенда по какому-то урлу
>> еще лежит в кэше или его там уже давно нет. В результате "замещение"
>> контента в кэше через proxy_cache_bypass может быть на самом деле
>> не замещением старого контента, а добавлением туда нового контента
>> и вымыванием из кэша другого контента, который реально запрашивался
>> клиентами, что ведет к уменьшению эффективности работы кэша nginx.

> Если задаться целью избежать добавления нового контента, можно 
> самостоятельно считать md5 от ключа кэша и проверять наличие этого 
> файла. Подобные вычисления можно делать в njs.

Или просто самим backend`ом вычислять md5 от ключа и удалять файл
из /var/cache/nginx/ - таким способом тоже должно все работать.

>> и при 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