这个问题只是关于cachingnginx,而不是caching头和浏览器caching。
我正在运行一个应用程序,显示表单的URL上的项目的详细信息
http://my-server/details/<id>/
其中id是项目的唯一标识符。 虽然生成的HTML页面是自动生成的,并且对项目来说是唯一的,但该页面相对包含其他JavaScript和CSS文件。 这些文件是静态的, 不依赖于项目ID。 应用程序非常慢,我希望nginxcaching任何可能的。
nginx充当反向代理。 是否有可能将所有.js和.css子请求的proxy_cache_key属性设置为只有文件名(省略了url中的id)?
例如: 之后首先访问http://my-server.tld/details/abc/style.css ,之后访问http://my-server.tld/details/def/style.css应该导致caching命中。 但是之后访问http://my-server.tld/details/abc/和http:// my-server / details / def /不应该(生成的HTML取决于id)。
这就是我所想的基本configuration
server { listen 80; server_name my-server.tld; location / { # root, doesn't matter } location /details { # request to non-asset, cache as usual } location ~ ^/details/[a-z0-9]+/[a-z0-9]+\.(js|css)$ { # request to static asset, use filename only as cache key } }
是的,您可以定义缓存的密钥。 这里是一个例子:
server { listen 80; server_name my-server.tld; location / { # root, doesn't matter } location /details { # request to non-asset, cache as usual } location ~ ^/details/[a-z0-9]+/(?<cache_filename>[a-z0-9]+\.(js|css))$ { proxy_cache_key "/details/$cache_filename"; # Other configurations # <...> } }