我正在开发一个项目,该项目将具有+100个云功能,因此为了使工作更容易,我将像这样构建我的所有功能:
/functions
/src
spotify/
searchMusic.function.js
...
auth/
signUp.function.js
...
...
index.js // Auto export every cloud function
在每个以.function.js结尾的文件中,我导出一个唯一的云函数。我的问题是,由于我每个文件没有超过一个谷歌云函数,我应该进行懒惰的导入/初始化吗?
例如,我知道当一个模块中有两个函数,其中一个不使用另一个中使用的包时,这样做是有用的:
const is_f1_admin_initialized = false;
exports.f1 = functions.region...{
const admin = require("firebase-admin");
// Lazy initialization
if(!is_f1_admin_initialized) {
// Initialize the admin SDK
...
is_f1_admin_initialized = true;
}
}
exports.f2 = functions.region...{}
但在我的情况下,f1.function.js中只有f1,懒惰的导入/初始化会减少冷启动吗?还是在全球范围内进行所有进口会更好?
谢谢。
更新
这就是我的意思:
"use-strict";
const functions = require("firebase-functions");
const admin = require("firebase-admin");
// All my imports...
// The admin SDK can only be initialized once.
try {
const googleCloudServiceAccount = require("../../utils/json/googleCloudServiceAccount.json");
admin.initializeApp({
...
});
} catch (e) {}
// The unique cloud function in the module
exports.function = functions.region...
// All my helper functions...
但在我的情况下,f1.function.js中只有f1,延迟导入/初始化会减少冷启动吗?
不,没有什么区别。
在任何一种情况下(在全局范围内或在函数内运行(,代码都处于为第一个请求提供服务的关键路径中。更改作用域不会更改代码运行所需的时间。
只有当您有多个函数不共享代码时,将代码移出全局范围才会有所帮助。将代码的执行转移到函数中只需确保其他函数不会不必要地执行它