Firebase云功能 - 功能定义性能

时间:2018-01-11 16:03:11

标签: typescript firebase google-cloud-functions

我在index.ts中将我的代码安排在简单的行函数定义上,如:

Http示例

export const demoHttpApp = functions.https.onRequest(
  (req, resp) => new DemoHttpClass(req, resp).run()
);

实时数据库示例

export const demoRtDb = functions.database.ref(DemoRtDbClass.PATH)
  .onWrite(event => new DemoRtDbClass(event).run());

我们的想法是按类开发课程并在外面测试。

每个类构造函数都返回 this ,以便能够调用clas成员。

我想知道是否会产生内存泄漏或任何类型的故障。

由于工作是针对复杂的操作,我更喜欢使用对象的方法,并将它们与其余的调用隔离开来。

但我不想创建问题,或因错误而支付长冻结实例。

据我所知,当函数完成时,对对象的引用会丢失,并释放内存。我想知道我是否做对了。

谢谢!

1 个答案:

答案 0 :(得分:0)

我看到的最大问题是,每次调用函数时,您都要创建对象的新实例。更好的模式是在函数外部初始化对象。当一个新实例旋转时,它将创建新对象,然后每次调用该函数时,它可以反复使用同一个对象,从长远来看,这将占用更少的内存。

var demoHttpApp = new DemoHttpClass();
export const demoHttpApp = functions.https.onRequest((req, res) => 
    demoHttpApp.run(req, res);
);

另一个好处是你可以通过构造函数传递Firebase数据库或auth管理对象,这样也可以使这些对象更容易测试。

以下是注入admin数据库对象的示例:

var databaseClass = new DemoRtDbClass(admin.database());
export const demoRtDb = functions.database.ref(DemoRtDbClass.PATH).onWrite(event => 
    databaseClass.run(event)
);