AWS是否会在加载Node.js模块后缓存它们?

AWS是否会在加载Node.js模块后缓存它们?,node.js,aws-lambda,Node.js,Aws Lambda,我正在寻找使用无服务器框架和Nodejs开发的应用程序的代码示例。我遇到了下面的一个例子 它们从一个唯一的处理程序加载一个名为DI.js的模块 此模块实际上将加载应用程序的所有模块依赖项 这是怎么回事 任何时候调用“POST:/subscribe”,它都会调用处理程序“subscribe:(evt,ctx,cb)=>{}”,该处理程序将加载DI.js中定义的所有模块 因此,最好是“一次性”加载所有模块,或者根据需要加载每个处理程序的模块?通常,您希望在启动服务器时加载所有模块,而不是对来自客

我正在寻找使用无服务器框架和Nodejs开发的应用程序的代码示例。我遇到了下面的一个例子

它们从一个唯一的处理程序加载一个名为DI.js的模块

此模块实际上将加载应用程序的所有模块依赖项

这是怎么回事

任何时候调用“POST:/subscribe”,它都会调用处理程序“subscribe:(evt,ctx,cb)=>{}”,该处理程序将加载DI.js中定义的所有模块


因此,最好是“一次性”加载所有模块,或者根据需要加载每个处理程序的模块?

通常,您希望在启动服务器时加载所有模块,而不是对来自客户端的每个请求加载一次

但这是一种无服务器的设置,设计用于在AWS Lambda或类似设备上运行。这意味着处理程序被加载到单个请求的内存中,一旦完成,节点实例就会退出。没有任何地方可以缓存加载的模块

这是使用无服务器服务的权衡。服务器需要将代码及其依赖项从文件加载到内存中,然后对每个请求执行,因此响应时间稍长


这样做的好处是,当您的请求较少时,您不必为24/7运行的服务器付费,而且一旦流量增加,您也不必担心维护或扩展问题。

要回答标题中的问题,节点会在模块加载后缓存模块,它们就像是单例,您实际上可以访问这方面的实例。