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