Установить истекает для всех статических данных, кроме домашнего URL

Я создаю спа-сайт, теперь для статических данных (javascript) я хочу настроить заголовки таким образом, чтобы они истекали только через определенное время.

Однако, чтобы облегчить обновление, я не хочу делать это на главной странице. (Каждая новая версия будет переименовывать связанный javascript, поэтому кеш будет аннулирован таким образом).

Данные моего сайта имеют следующий фрагмент:

location /api {
    proxy_pass  http://${DYNAMIC_SERVER}:${DYNAMIC_PORT};
}

location / {
    # redirect everything to show the main SPA application
    try_files $uri $uri/ /index.html;
    expires 7d;
}

Это кэширует все, в том числе index.html - как мне это предотвратить?

1 ответ

Решение

Чтобы отключить кэш для любого URI, который не разрешается в статический файл, а вместо этого внутренне переписывается в /index.html, вам нужно будет добавить отдельный location блок для обработки этого одного URI.

Например:

location / {
    expires 7d;
    try_files $uri $uri/ /index.html;
}
location = /index.html {
    expires -1;
}

Nginx выбирает location блок для обработки исходного запрошенного URI. try_files оператор вызывает, что URI будет внутренне переписан, если он не соответствует статическому файлу или каталогу. Затем Nginx возобновляет поиск location блок для обработки переписанного URI.

Другие вопросы по тегам