我想使用 Single-spa 文档中显示的方法:
部署并确保使用最新的 javascript 文件的另一个选项是使用重定向(HTTP 状态代码 302)。 single-spa 导入映射使用 javascript 文件的未散列 url。例如:dist/app.js。然后当对该文件的请求到达服务器时,它被重定向到实际部署的文件,例如。 dist/app.123abc.js 然后将其提供给客户端。这样导入映射就永远不需要更新,微前端可以单独部署。
如果我不知道当前的“123abc”散列部分,我如何在 nginx 中定义这样的重定向? 我设置了一个重定向,但它只工作了一次,而哈希值是正确的:
location /spa/main.js { return 301 /spa/main.58321d0246d99a5aeaaa.js; }
我不确定这个答案是否会被 Stack Overflow 警察视为“有效”答案,但无论如何,它是:
不追求这种方法,Nginx中有更好的方法
Nginx 默认计算所有静态内容的哈希值。然后使用此哈希创建ETag HTTP 标头。浏览器使用 ETag HTTP 标头 来发现资源的缓存副本是否仍然是最新的。
问题:浏览器可能会花一些时间来检查服务器。基本上,只有在缓存数据从 Fresh 移动到 Stale 状态后,它才会与服务器检查缓存的有效性。我不认为你需要这里的所有细节,所以只要知道这一点:我们可以通过在位置配置中添加
add_header Cache-Control "no-cache"
来强制浏览器每次都使用 Nginx 服务器进行检查。
我相信如果这个主题超出了您当前的 Nginx 知识范围,您将能够在互联网上找到有关如何完成此配置的更多信息。