Я размещаю модуль ES6 javascript, используя nginx. Современные браузеры автоматически загружают свои импортированные зависимости . Поскольку они статичны, я хочу, чтобы браузеры их кешировали. Но я также хочу, чтобы конечные пользователи автоматически получали обновления моего модуля, как только я развернул новую версию (Cache Busting).
Допустим, следующие файлы и зависимости:
/a.js ---> b.js
/b.js
Во время сборки я меняю их имена, чтобы они содержали их хэш md5:
/a.be8654ac0f52d085d1d91a8f447329e2.md5.js ---> b.js
/b.14a723a49c59b609d5b2614204bd5513.md5.js
Я хочу, чтобы все запросы на a.js и b.js были перенаправлены на соответствующие им имена хеш-файлов.
/a.js ---> /a.be8654ac0f52d085d1d91a8f447329e2.md5.js
/b.js ---> /b.14a723a49c59b609d5b2614204bd5513.md5.js
Я хочу, чтобы nginx позаботился об идентификации хэшированных имен файлов и доставке их с заголовками управления кэшем. Это должно быть возможно так:
# Cachable Javascript
location ~* \.[\d\w]{32}\.md5.js$ {
expires 1y;
add_header Cache-Control "public";
}
Все другие (не хэшированные) ресурсы JS должны быть перенаправлены на соответствующую им версию хеш-имени файла. Если я выпущу новую версию a.js и b.js (с новыми хэшами md5), я хочу, чтобы конфигурация nginx работала без настроек.
Как я могу настроить nginx соответственно? Возможно ли это вообще с nginx? Если нет, я открыт для других подходов.