Я создаю спа-сайт, теперь для статических данных (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.