On Sun, Sep 21, 2014 at 04:40:00PM +0300, Roland RoLaNd wrote:
Hi there,
Using map is cool idea, though i have around 2000 possible imageId and size and
more than 9 million user id… they’re always imageIDs are prone to change,
wouldn’t that mean i have to add them manually every time ?
map can use regex.
However, map can only use a single variable, so I think you would need
two maps (or perhaps a “set” within an “if”) in order to save the
request
uri without the user part.
For example:
map $uri $the_bit_before_user {
~(?P.*)&user=[0-9]+& $m;
default $uri;
}
map $uri $the_bit_after_user {
~&user=[0-9]+(?P&.*) $m;
default “”;
}
followed by a later
set $request_without_user $the_bit_before_user$the_bit_after_user;
could give you a variable that might be useful to use as part of your
cache_key.
On another note, let’s say i mapped all wanted cache keys, how can i force the
incoming requests to match with that key ? as i would be stuck with the same
dilemma as now, since the uri as it’s missing the “?” isn’t treating the arguments
as query string but part of the uri itself…
There are no arguments. There is no query string. There is only the uri
(the location, in this case).
Can you describe what you want to happen when a client makes a request
of nginx?
I imagine it is something like “if nginx has the appropriate response
in cache send it; otherwise do something to populate the cache and send
the response”. But I do not know what you think should populate the
cache in the first place.
f
Francis D. [email protected]