Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
простая-директива if ск олько-угодно-сложное-усло вие;
Igor Sysoev wrote:
Может быть, что-то типа
if (...) {
fastcgi_no_cache;
}
было бы универсальнее?
(А в идеальном мире - возможность вписыватьлюбые директивы fastcgi_cache*
внутрь iif-ов.)
Сейчас именно конструкция "if (...) { }" - это хак внутри nginx'а.
Поэтому и любые директивы внутри if и не разрешены, а те, что разрешены
не всегда работают так, как ожидается.
Я скорее сделаю предикаты типа
fastcgi_no_cache "$http_pragma == 'no-cache' && $trusted_addresses";
чем буду лечить "if (...) { }".
конструкция "if (...) { }" является нежелательной, потому что
создается скрытый location, и не все работает так как ожидалось.
может быть вместо синтаксиса
fastcgi_no_cache "$http_pragma == 'no-cache' && $trusted_addresses";
limit_conn conn=5 zone=resp_zone if=$limit_conn;
сделать обобщенный вариант по аналогии с perl:
простая-директива if сколько-угодно-сложное-условие;
в этом случае не нужно будет делать скрытый location
для if и останется возможность для развития, если в будущем
будут добавлены функции, например, md5( ), логические операторы и т.п.
fastcgi_no_cache if "$http_pragma == 'no-cache' && $trusted_addresses";
limit_conn conn=5 zone=resp_zone if $limit_conn;
PS http://perldoc.perl.org/perlsyn.html#Statement-Modifiers
По-хорошему это надо бы делать как-то так:
fastcgi_no_cache $cookie_debugMode;
fastcgi_no_cache $arg_nc;
fastcgi_no_cache $http_authorization;
fastcgi_no_cache $http_pragma;
Возможно, завтра сделаю.
2009/10/6 1nsk.ru <alfa@xxxxxxx>
А как обернуть всё это дело в
?
if ($http_cookie !~ "user_id") {
#кэшируем только гостям
}
А то в if нельзя fastcgi_store
--
Best regards,
Gena
|