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