javascript - Lambda/无服务器内联要求与 header 要求

标签 javascript node.js memory aws-lambda serverless-framework

背景

我正在使用 AWS Lambda 和 API Gateway 构建 API。我没有将每个 API 端点拆分为单独的 lambda 函数,而是将它们包装到一个库中并使用 aws-serverless-express 库。

问题

鉴于整个 API 中只有一部分可能用于单个 Lambda 执行中——从内存利用的 Angular (以降低成本)来看,两者之间是否存在差异:

var myModule = require("mymodule");

...

function handleSomething1()
{
    myModule.doSomething();
}

function handleSomething2()
{
    ...
}

function handleSomething()
{
    require("mymodule").doSomething();
}

function handleSomething2()
{
    ...
}

例如,单个 API 请求可能会导致在 Lambda 函数关闭之前仅调用 handleSomething2。在那种情况下,我们是否通过在顶部调用 var myModule = require("mymodule"); 来有效地浪费内存?

我想更直接的问题是,当我 var myModule = require("mymodule") 时,node.js 运行时实际上是否在那个时刻为 myModule 分配内存?或者在我用 myModule 实际之前它实际上是一个空操作?

最佳答案

您应该始终在 Node.js 中使用异步方法和函数调用。然而,Node.js 总是同步运行 require 并且需要的模块可能需要其他需要的模块,这是一个昂贵的过程。

即使对于 Lambda 的上下文,这也保持不变,因为如果您在函数外部定义“require”,它将在 Lambda 冷启动时启动,并且不会为后续的热启动调用重新运行。

有关 Lambda 容器重用的更多信息 reference .

关于javascript - Lambda/无服务器内联要求与 header 要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45222993/

相关文章:

javascript - 以下 JavaScript 代码中的解释

javascript - 如何在单击按钮时从数组中删除项目

javascript - 带传单 js 的动态 PHP geo json 示例

Node.js、multer 和 req.body 为空

javascript - 从内部 Node 发出 SIGINT 事件

node.js - 有没有一种有意义的方法可以使用游标并行扫描 Redis?

javascript - jquery - 使用 split 仅分割文本?

c - 编译器如何在编译时不知道大小的情况下分配内存?

android - 位图.recycle() - "IllegalArgumentException: Cannot draw recycled bitmaps"

c++ - 段错误代码的可能原因是什么