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

Срок действия истекает для всех статических данных, кроме домашнего 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 - как мне предотвратить это?

Чтобы отключить кеш для любого 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.