【问题标题】: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()

/**
 * SSR
 * @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”

感谢您的帮助!

【问题讨论】:

    标签: reactjs firebase google-cloud-firestore google-cloud-functions next.js


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 2014-09-03
      • 2020-04-03
      相关资源
      最近更新 更多