Re: Не работает proxy_cache_lock on;

Pavel V. pavel2000 at ngs.ru
Tue Dec 18 12:41:16 UTC 2012


Здравствуйте, Максим.

Вы писали 18 декабря 2012 г., 18:52:50:

> В приведённом логе, к сожалению, отсутствует $upstream_cache_status, 
> но подозреваю, что там было бы не MISS, а EXPIRED - т.е. речь идёт 
> об обновлении устаревшего элемента кеша.  В этом случае 
> proxy_cache_lock работать и не должен.

Да, скорее всего всё именно так. Видимо, следует дополнительно отразить этот момент в документации.
Из того, что там сейчас есть:

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

я _предположил_ (и ошибся), что фраза "заполнить новый элемент кэша" также применима к обновлению
устаревшего элемента.

> Остальные запросы этого же элемента будут либо ожидать появления ответа в кэше, либо освобождения
> блокировки этого элемента, в течение времени, заданного директивой proxy_cache_lock_timeout.

Я ожидал, что блокировка запроса к элементу также будет применима и во время обновления.

И да, я не читал описание директивы proxy_cache_use_stale, т.к. не собирался её использовать:

> Чтобы минимизировать число обращений к проксированным серверам при заполнении нового элемента
> кэша, можно воспользоваться директивой proxy_cache_lock.

Использование proxy_cache_use_stale updating; разрешит отдать устаревший ответ, а вот варианта
"поставить запрос в очередь и дождаться обновления" - я так понимаю, нету.

То, что proxy_cache_lock не работает для процедуры обновления устаревшего элемента, на мой взгляд,
не ожидемо, и, думаю, что этот момент требует дополнительного уточнения в документации. Например,
добавить такой абзац:

"На число обращений к проксированным серверам при обновлении устаревших элементов кэша данная
директива не влияет. Для минимизирования числа таких обращений следует разрешить использование
устаревшего элемента в качестве ответа используя директиву proxy_cache_use_stale."

Спасибо за ответ и разъяснение.

-- 
С уважением,
 Pavel                          mailto:pavel2000 at ngs.ru



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