Повторное использование 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