Merging equivalent cache keys?

roysmith649 nginx-forum at nginx.us
Sat May 18 12:52:11 UTC 2013


We've got a route which is used to retrieve multiple objects in parallel. 
The client does a GET on /api/1/station/multi?id=123&id=456&id=789.  We
cache these in our nginx config:

       location ~ /api/[^/]+/station/multi {
              proxy_pass http://localhost:8000;
              proxy_set_header X-Real-IP  $remote_addr;
              proxy_set_header Host $host;
              proxy_set_header X-Forwarded-Host $host;
              proxy_set_header X-Forwarded-Server $host;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

              proxy_cache api;
              proxy_cache_use_stale updating;
       }

The problem is, clients present the ids in random order. For example, one
client might ask for id=1&id=2, and another ask for id=2&id=1.  Both should
return exactly the same response, but map to different cache keys.  For two
ids, it's not that bad, but many of the calls are for large numbers of ids
and the combinatorics quickly spin out of control.

Is there any way to rewrite the keys in nginx to canonicalize them?  Sorting
all the ids in numerical order would do it.

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,239315,239315#msg-239315



More information about the nginx mailing list