为啥重新部署应用后 Firebase 需要永远完成相同的功能?

Posted

技术标签:

【中文标题】为啥重新部署应用后 Firebase 需要永远完成相同的功能?【英文标题】:Why does Firebase take forever to complete the same function after redeploying an app?为什么重新部署应用后 Firebase 需要永远完成相同的功能? 【发布时间】:2020-12-17 13:19:35 【问题描述】:

总结

我们正在构建一个托管在 Firebase 中的应用。该应用程序是使用 react 和 next.js 构建的,next(以及应用程序)通过 Firebase Cloud Function 提供给客户端。我注意到,在我们重新部署应用程序后(通常是因为我们正在发布它的新版本),为客户端提供应用程序的功能需要花费 不可接受 的时间来为应用程序提供服务。例如,在重新部署之前,执行大约需要半秒(见图 1),而在重新部署之后,大约需要 36 秒(见图 2)。为什么会这样?

图 1:重新部署之前

图 2:重新部署后

代码示例

这是负责通过 Cloud Function 为客户端提供应用程序的代码块(来自 Firebase Functions 中的 index.js):

/**
 * Environmental value
 * @type boolean
 */
var dev = process.env.NODE_ENV !== "production"
/**
 * ServerApp
 * @type DevServer
 */
var app = next(
  dev: false,
  conf:  distDir: `$path.relative(process.cwd(), __dirname)/next` ,
)
/**
 * Get request handler
 */
var handle = app.getRequestHandler()

/**
 * s-s-r
 * @type HttpsFunction
 */
exports.next = functions.https.onRequest((req, res) => 
  // log the page.js file that is being requested
  console.log("File: " + req.originalUrl)

  return app.prepare().then(() => handle(req, res))
)

技术栈

“火力基地”:“^7.14.4” “firebase-admin”:“^8.12.1” “firebase-functions”:“^3.8.0” “反应”:“^16.8.6”

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您似乎在使用 Cloud Functions 时遇到冷启动。据我所知,您无法避免它,因为您的函数需要在重新部署后第一次调用时进行初始化。 This 是一个关于冷启动以及如何将其对您的应用的影响降到最低的视频。

【讨论】:

以上是关于为啥重新部署应用后 Firebase 需要永远完成相同的功能?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Firebase 远程配置不更新值?

为啥 Firebase 功能部署非常缓慢?

您需要启用 JavaScript 才能运行此应用程序。将 React 应用部署到 Firebase 后

如何在没有root访问权限的情况下部署NodeJS应用程序,以便在服务器重新启动后保持在线状态?

Firebase Jobdispatcher:由于错误而无休止运行的作业永远不会再次安排

React API 调用给出“您需要启用 JavaScript 才能运行此应用程序”。在 Firebase 服务器中部署 ReactJs 应用程序后出错