Use /g (global) regex modifier in map
Gabriel Arrais
lists at ruby-forum.com
Fri Aug 8 18:27:54 UTC 2014
Maxim Dounin wrote in post #1154691:
> Hello!
>
> On Fri, Aug 08, 2014 at 05:06:55PM +0200, Gabriel Arrais wrote:
>
>> The same problem would occur using the variable $args right?
> Sure.
>
>> Example:
>> ?fq=xxxxxx&sm=0&PageNumber=1 and
>> ?fq=xxxxxx&sm=0&PageNumber=1&fq=yyyyyyyyyy
>>
>> Are returning the same content. Is there a way to avoid this behavior?
>
> There is no easy one, as nginx itself doesn't know how to work
> with multiple arguments with the same name. You may try to build
> a regex to extract second argument with the given name (3rd, 4th,
> and so on) and include these into the cache key as well.
>
I think that it would end in a complicated solution this way...
Do you think that a perl code like
perl_set $filtered_args '
sub {
my $r = shift;
my $args=$r->args;
my @parts = $args =~ /[DESIRED_REGEX]/g;
@parts = sort @parts;
$filtered_args = join("&", @parts);
return $filtered_args;
}
';
proxy_cache_key $host:$uri?$filtered_args;
Will do the job?
I'm trying it right now.
Again, thank you for your time.
--
Posted via http://www.ruby-forum.com/.
More information about the nginx
mailing list