![Nginx 是否将所有缓存的切片合并为一个文件,就像后端一样?](https://linux22.com/image/775432/Nginx%20%E6%98%AF%E5%90%A6%E5%B0%86%E6%89%80%E6%9C%89%E7%BC%93%E5%AD%98%E7%9A%84%E5%88%87%E7%89%87%E5%90%88%E5%B9%B6%E4%B8%BA%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%EF%BC%8C%E5%B0%B1%E5%83%8F%E5%90%8E%E7%AB%AF%E4%B8%80%E6%A0%B7%EF%BC%9F.png)
我正在使用 Nginxslice
模块来填充大文件的缓存,如下所示https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/
以下是示例配置
location / {
slice 1m;
proxy_cache cache;
proxy_cache_key $uri$is_args$args$slice_range;
proxy_set_header Range $slice_range;
proxy_cache_valid 200 206 1h;
proxy_pass http://localhost:8000;
}
文章说:
NGINX 可以缓存此类范围请求,并使用缓存切片模块逐渐填充缓存,该模块将文件划分为较小的“切片”。每个范围请求都会选择覆盖请求范围的特定切片,如果此范围仍未缓存,则将其放入缓存中。对这些切片的所有其他请求都会从缓存中获取数据。
我的问题是,当从后端接收到文件的所有字节范围并且 Nginx 缓存了所有切片时会发生什么。Nginx 是否仍使用多个切片来处理请求,还是将所有切片合并成一个大文件(与后端中的文件相同),然后从大文件处理请求?
如我所见,缓存键是proxy_cache_key $uri$is_args$args$slice_range;
。那么,这是否意味着即使 Nginx 获得了全部内容,但它仍会将这些切片分开,并使用这些切片来满足字节范围请求?
谢谢