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