Повторное использование map при изменении исходной переменной

Igor Sysoev is at rambler-co.ru
Fri Jul 24 14:47:30 MSD 2009


On Fri, Jul 24, 2009 at 02:41:17PM +0400, Kirill A. Korinskiy wrote:

> At Fri, 24 Jul 2009 13:04:34 +0400,
> Vladimir Latyshev <latysheff at gmail.com> wrote:
> > 
> > Запрос:
> > http://myhost/app1/request1.php
> > 
> > Конфиг (с рудиментами, но рабочий):
> 
> понятно. Тут вопрос не в кеширование map'а а в том, что вы используете
> переменные установленные через set, которые кешируются и не
> flush'аться.
> 
> Как workaround вам подойдет такой вот патч:
> 

> diff --git a/src/http/ngx_http_script.c b/src/http/ngx_http_script.c
> index 680d8e3..8692478 100644
> --- a/src/http/ngx_http_script.c
> +++ b/src/http/ngx_http_script.c
> @@ -1766,7 +1766,7 @@ ngx_http_script_set_var_code(ngx_http_script_engine_t *e)
>  
>      r->variables[code->index].len = e->sp->len;
>      r->variables[code->index].valid = 1;
> -    r->variables[code->index].no_cacheable = 0;
> +    r->variables[code->index].no_cacheable = 1;
>      r->variables[code->index].not_found = 0;
>      r->variables[code->index].data = e->sp->data;

> 
> по хорошему надо бы сделать set_no_cacheable для таких вещей.

set записывает значение прямо в r->variables, то есть, меняет именно
кэшированное значение.


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list