ignore part of URL to force caching?

Igor Sysoev igor at sysoev.ru
Fri Oct 5 10:08:20 UTC 2012


On Thu, Oct 04, 2012 at 02:20:30PM -0400, AJ Weber wrote:
> I would like to "override" the intent of the app server that is 
> basically disabling any caching of the backend file.  For example, they 
> are embedding a "noCache=#######" parameter at the end of the URL (there 
> are other parameters following, but if I can check the url up-to the "?" 
> that would suit me fine).
> 
> This is actually a dynamically generated SWF file, but the file is then 
> constant for a reasonable amount of time such that I'd like to cache it 
> for a few minutes.
> 
> Is there a way in a specific "location" to tell nginx to ignore the 
> parameters (or any portion of the URL) when determining the cached 
> object for that URL?  In other words, tell nginx to cache content for 
> that location, say only 5min, and ignore all parameters when determining 
> whether to cache and how to match cached content?
> 
> If I'm not explaining myself properly, please let me know and I'll try 
> another route. :)

You can use "proxy_cache_key":
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_key

For example, to completly ignore query strings:

location /swf/ {
    ...
    proxy_cache  ...
    proxy_cache_valid  5m;
    proxy_cache_key    $proxy_host$uri;
}

or to account query strings parameters ONE and TWO:

location /swf/ {
    ...
    proxy_cache  ...
    proxy_cache_valid  5m;
    proxy_cache_key    $proxy_host$uri?$arg_ONE&$arg_TWO;
}


-- 
Igor Sysoev
http://nginx.com/support.html



More information about the nginx mailing list