nginx - 有时提供以前版本的文件(缓存?)

时间:2018-04-28 19:07:45

标签: nginx caching cache-control

我的nginx服务器(由VestaCP安装)正在提供缓存内容,即使我告诉它不缓存。
该文件是m3u8文件,由ffmpeg不断创建和更新。

nginx config:

 set global optimizer_switch='derived_merge=off'; 
 set optimizer_switch='derived_merge=off'; 
 select @@optimizer_switch; 
 select @@GLOBAL.optimizer_switch;

cURL命令和输出:

location ~ /stream/(.*)\.m3u8 {
    add_header Last-Modified $date_gmt;
    add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
    if_modified_since off;
    expires off;
    etag off;
    proxy_no_cache 1;
    proxy_cache_bypass 1;
    max_ranges 0;
    root /;
}

正如您在$ curl https://example.com/stream/klan.m3u8 -k -H "Cache-Control: no-cache" -i HTTP/1.1 200 OK Server: nginx Date: Sat, 28 Apr 2018 18:43:42 GMT Content-Type: application/vnd.apple.mpegurl Content-Length: 276 Connection: keep-alive Keep-Alive: timeout=60 Last-Modified: Saturday, 28-Apr-2018 18:43:42 GMT #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:6 #EXT-X-MEDIA-SEQUENCE:1049 ... 上看到的那样,它在该请求上的第1049个块上。每隔约5秒增加+1。

几秒钟后,同样的请求,但输出是:

#EXT-X-MEDIA-SEQUENCE:1049

我几乎每秒都会发送相同的请求,有时它会从之前的文件返回一个减少的值。

..
#EXT-X-MEDIA-SEQUENCE:1050
..


我已经确认该文件没有问题。 nginx返回一个不同的文件,缓存版本 另外,如果我在PHP中使用#EXT-X-MEDIA-SEQUENCE:1047 ,它也会返回最新文件
任何想法如何调试,或解决它?谢谢!

1 个答案:

答案 0 :(得分:0)

我显然需要使用open_file_cache off;

相关问题