How to cache js/css request containing a question mark?

Following nginx configuration in a server block can cache js and css
files
with “js” or “css” as the end of the url.

    location ~ .*\.(js|css)?$ {
            expires 7d;
            }

But it can’t cache request such as:

http: //example.com/jquery.js?ver=1.11.3&build=1

or

http: //example.com/style.css?ver=4.3&build=1

Any way to cache cs/jss files above? Or cache files based on the file
type
of request instead of file name?

Posted at Nginx Forum:

Please try to remove $ in the end of the expression:

something like this:

location ~ .*.(js|css) {
expires 7d;
}

Also, make sure you are using args in the cache key:

proxy_cache_key “$host$uri$is_args$args”;

Regards,
Biazus

Posted at Nginx Forum:

Thank you, Biazus!

Posted at Nginx Forum:

Well, unfortunately this is not working…

http://example.com/style.css?ver=4.3
http://example.com/jquery-migrate.min.js?ver=1.2.1

biazus Wrote:

proxy_cache_key “$host$uri$is_args$args”;

Regards,
Biazus

Posted at Nginx Forum:

You will need to be a little bit more specific than ‘this is not
working’
to get some help.
http://www.catb.org/esr/faqs/smart-questions.html

Btw, the documentation show the default value for proxy_cache_key if
none
is provided, and it already takes arguments (and thus arguments’
separator)
into account:
Module ngx_http_proxy_module
Module ngx_http_core_module

B. R.