我正在使用 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 获得了全部内容,但它仍会将这些切片分开,并使用这些切片来满足字节范围请求?
谢谢