问题:使用 Nginx 强制缓存文件

我正在尝试强制缓存此类文件:css、woff、otf、js、jpg、jpeg、gif、png、ico、cur、gz、svg、svgz、mp3、mp4、ogg、ogv 和没有扩展名的文件.

我可以缓存一些图像和 mp3 文件,但其余的始终处于一种状态:X-Cache MISS

proxy_cache_path /tmp/test keys_zone=test:10m loader_files=300 max_size=4g;

location ~* (^/.*(css|woff|otf|js|jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp3|mp4|ogg|ogv)$|^/web/image.*) {
          proxy_cache test;

          proxy_cache_methods GET HEAD;
          proxy_cache_lock on;

          proxy_ignore_headers Set-Cookie;
          proxy_ignore_headers X-Accel-Expires;
          proxy_ignore_headers Expires;
          proxy_ignore_headers Cache-Control;

          add_header Pragma "public";
          add_header Cache-Control "public";
          add_header X-Cache $upstream_cache_status;
          access_log off;
          expires 12h;

          proxy_pass http://test;
  }

得到:

  • 接受:text/css,/;qu003d0.1

  • 接受编码:gzip、deflate、br

  • Accept-Language: en-ES,en;qu003d0.8,en-US;qu003d0.5,en;qu003d0.3

  • 缓存控制:无缓存

  • 连接:保持活动

  • DNT: 1

  • Pragma: 无缓存

Nginx:

  • 缓存控制:max-ageu003d43200

  • 连接:保持活动状态

  • 内容编码:gzip

  • 内容类型:text/css

  • 日期:2017 年 12 月 15 日星期五 10:20:22 GMT

  • ETag: W/"XXXXXXXXXX"

  • 到期:格林威治标准时间 2017 年 12 月 15 日星期五 22:20:22

  • 服务器:nginx

  • 传输编码:分块

  • 变化:接受编码

  • X-Cache-Status: MISS

  • X-Content-Type-Options: nosniff

谢谢

解答

尝试添加

proxy_cache_valid 200 1d; 

将与您的位置匹配且 http 状态为 200 的所有文件在缓存中保存 1 天

Logo

开发云社区提供前沿行业资讯和优质的学习知识,同时提供优质稳定、价格优惠的云主机、数据库、网络、云储存等云服务产品

更多推荐