这个问题仅关于缓存nginx,而不是关于缓存头和浏览器缓存.
我正在运行一个应用程序,显示表单URL的项目详细信息
http://my-server/details/<id>/
Run Code Online (Sandbox Code Playgroud)
其中id是项目的唯一标识符.虽然生成的HTML页面是自动生成的并且对项目是唯一的,但页面相对包含其他JavaScript和CSS文件.这些文件是静态的,不依赖于项目ID.应用程序非常慢,我希望nginx可以缓存任何可能的内容.
nginx充当反向代理.是否可以将所有.js和.css子请求的proxy_cache_key属性设置为仅文件名(省略url中的id)?
示例:首先访问http://my-server.tld/details/abc/style.css,然后http://my-server.tld/details/def/style.css应该导致缓存命中.但是不应该访问http://my-server.tld/details/abc/和http:// my-server/details/def /(生成的HTML取决于id).
这就是我所想的基本配置
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
}
}
Run Code Online (Sandbox Code Playgroud)
是的,您可以定义缓存密钥.这是一个例子:
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
# <...>
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
864 次 |
| 最近记录: |