使用NextJS的部署策略建议

Alb*_*oda 7 javascript deployment node.js isomorphic-javascript next.js

您能否向我们推荐使用nextjs在生产中部署应用程序的最佳实践?

我们正在考虑以下策略:金丝雀部署,蓝/绿部署......我们有几个疑问来处理BUILD_ID.

现在,通过这种策略,我们面临着这样的错误:

INVALID_BUILD_ID,因为在部署的某个时刻,我们至少有两个不同版本的应用程序.

例如:

在Canary部署中,我们有两个不同的版本,Balancer将客户端发送到版本A,但是当客户端需要其他资源时,平衡器可以将此请求发送到版本B的服务器.此时客户端当应用程序获取serp.js,_error.js,_document.js等资源并且未正确加载网页时,会收到500错误.

_next/f6bff019-9550-4029-99fa-2b33a50045f6/page/index.js ---> old (previous deployment)

_next/005b2202-c5b2-4de6-afd8-1c8451d16ab3/page/index.js ---> new (current deployment)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我们测试过:

  1. 将BUILD_ID重命名为在两个版本中都具有相同的哈希值,但我们认为这是一种不好的做法,因为我们认为客户端的缓存不会刷新预期的方式.

  2. 粘性会话是最可靠的,但我们处理一个无状态应用程序作为一个状态的应用程序,实际上是不正确的.

  3. 我们可以在前面放置一个缓存BUILD_ID的CDN,但是我们不确定我们应该为js文件的缓存分配时间.

小智 -2

我建议您遵循JAMStack模式来部署 NextJs 应用程序。

Vercel为 NextJS 提供最好的部署和托管服务,您可以免费开始

您可以按照本指南进行操作