验证文件未缓存

验证文件未缓存

我在 nginx 中有这样的代码:

location / {
  add_header 'Access-Control-Allow-Origin' '*';
  autoindex on;

  set $no_cache "";

  if ($request_uri ~* \.m3u8$) {
    set $no_cache "1";
  }

  proxy_no_cache $no_cache;
  proxy_cache_bypass $no_cache;
}

我想验证缓存是否正常工作。我该怎么做?

我尝试过 curl 命令,但它似乎没有提供我需要的信息:

curl --head -v http://myurl.myloc.com/myfile.m3u8

答案1

我假设你正在谈论 Nginx 页面缓存。我还假设你已经正确设置了页面缓存。

在这种情况下,我将采用简单的方法来测试非缓存

  1. 删除当前缓存
  2. 请求不应缓存的文件
  3. 统计缓存目录结构中的文件数量

测试缓存文件

  1. 删除当前缓存
  2. 请求需要缓存的文件
  3. 统计缓存目录结构中的文件数量

要查看 Nginx 配置中执行了哪些操作,一种方法是使用内置于 Nginx 中的 headers_more 模块(教程在这里),然后在整个配置中使用“add_header”指令 - 将其删除以供生产。您似乎已经在使用 add_header,所以可能没问题。然后,您只需使用“curl -i”即可查看配置的哪些部分已执行。例如

location / {
  add_header 'Access-Control-Allow-Origin' '*';
  autoindex on;

  set $no_cache "";

  if ($request_uri ~* \.m3u8$) {
    set $no_cache "1";
    add_header EXAMPLE_HEADER "abcd";
  }
  add_header NO_CACHE $no_cache;

  proxy_no_cache $no_cache;
  proxy_cache_bypass $no_cache;
}

对于以“m3u8”结尾的文件,curl -i 将包含如下内容

标头:NO_CACHE 1

而其他人会说

标头:NO_CACHE

这是一个非常简单但功能强大的技术,我在使复杂的 Nginx 配置工作时经常使用它。

相关内容