我正在使用nginx托管ES6 javascript模块。现代浏览器会自动加载其imported dependencies。由于它们是静态的,因此我希望浏览器对其进行缓存。但是,我还希望最终用户在部署新版本(缓存清除)后自动检索模块的更新。
假定以下文件和依赖项:
/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完全有可能吗?如果没有,我愿意采用其他方法。