Назад | Перейти на главную страницу

Убедитесь, что файл не кэшируется

У меня есть этот код в 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

Я предполагаю, что вы говорите о кешировании страниц Nginx. Я также предполагаю, что вы правильно настроили кеширование страниц.

В этом случае я бы использовал простой подход для проверки отсутствия кеширования

  1. Удалить текущий кеш
  2. Сделайте запрос на файл, который не следует кэшировать
  3. Подсчитайте файлы в структуре каталогов кеша

Для проверки кешированных файлов

  1. Удалить текущий кеш
  2. Сделайте запрос на файл, который нужно кэшировать
  3. Подсчитайте файлы в структуре каталогов кеша

Один из способов увидеть, что было выполнено в вашей конфигурации Nginx - это использовать модуль headers_more, который вы встроили в Nginx (учебник здесь), затем используйте директиву 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;
}

Curl -i для файла, заканчивающегося на "m3u8", будет включать что-то вроде этого

Заголовок: NO_CACHE 1

в то время как другие сказали бы

Заголовок: NO_CACHE

Это очень простой, но мощный метод, который я часто использую при работе со сложными конфигурациями Nginx.