为啥重新部署应用后 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 需要永远完成相同的功能?的主要内容,如果未能解决你的问题,请参考以下文章
您需要启用 JavaScript 才能运行此应用程序。将 React 应用部署到 Firebase 后
如何在没有root访问权限的情况下部署NodeJS应用程序,以便在服务器重新启动后保持在线状态?
Firebase Jobdispatcher:由于错误而无休止运行的作业永远不会再次安排
React API 调用给出“您需要启用 JavaScript 才能运行此应用程序”。在 Firebase 服务器中部署 ReactJs 应用程序后出错