如何设置散列文件名的最大到期时间?
How to set max expiry for hashed-filenames?
我们应该如何为名称中包含散列的文件设置 nginx-expires 设置?
例如angular 构建过程将输出:
其中:
ngs-worker.js
(非散列文件名)不得缓存
polyfills-es5.3eb4a9891f4a514281f1.js
等(散列文件名)可以永久缓存
现在,我知道我可以为所有 js
文件设置最大缓存过期时间并排除一些(例如 ngs-worker.js
)
但是当我忘记一个非散列文件或者如果未来的版本会产生额外的非散列文件时,这将是灾难性的。
我们该如何处理?
也许使用 来查找所有散列文件?
我们使用正则表达式查找名称中包含 20 个字符散列的所有文件(由点包围)
# e.g. 'polyfills-es5.3eb4a9891f4a514281f1.js'. 'roboto-v18-latin-300.815babffe97b00a1f30b.woff2', ..
location ~* "\.[a-f0-9]{20}\." {
access_log off;
expires max;
}
请注意,必须引用位置正则表达式 - 请参阅此 SO answer
我们应该如何为名称中包含散列的文件设置 nginx-expires 设置?
例如angular 构建过程将输出:
其中:
ngs-worker.js
(非散列文件名)不得缓存polyfills-es5.3eb4a9891f4a514281f1.js
等(散列文件名)可以永久缓存
现在,我知道我可以为所有 js
文件设置最大缓存过期时间并排除一些(例如 ngs-worker.js
)
但是当我忘记一个非散列文件或者如果未来的版本会产生额外的非散列文件时,这将是灾难性的。
我们该如何处理?
也许使用
我们使用正则表达式查找名称中包含 20 个字符散列的所有文件(由点包围)
# e.g. 'polyfills-es5.3eb4a9891f4a514281f1.js'. 'roboto-v18-latin-300.815babffe97b00a1f30b.woff2', ..
location ~* "\.[a-f0-9]{20}\." {
access_log off;
expires max;
}
请注意,必须引用位置正则表达式 - 请参阅此 SO answer