Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Не работает proxy_cache_lock on;
Здравствуйте, Максим.
Вы писали 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@xxxxxx
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|