gpt4 book ai didi

javascript - 云函数冷启动期间,node_modules 文件夹的大小是否重要?

转载 作者:行者123 更新时间:2023-12-02 19:12:17 29 4
gpt4 key购买 nike

我知道您应该只在索引文件的全局范围内导入所需的模块,以减少冷启动的时间。

但我还没有发现,在云函数的情况下,node_modules 文件夹的大小(或 package.json 文件的 dependency 属性的长度)对于冷启动是否重要,或者仅对导入的模块进行计数?

最佳答案

大小并不重要!当您发布代码时,会构建一个容器(使用 buildpacks )。该容器已被缓存,因此当函数启动时,无需下载该容器。

在那里,大小不会影响启动时间(因为没有下载)。

然而,一个大的node_modules文件夹(更一般地说,在任何语言中,大量的依赖项)可能意味着在启动时初始化的很多东西(服务、与数据库的连接,... )。如果处于急切模式,则会增加启动持续时间。

更喜欢对组件进行延迟初始化,甚至是全局组件。也更喜欢轻框架(或无框架)而不是大 Berta!!

编辑

函数版本没有缓存策略管理。当版本构建并处于事件状态时,图像将被缓存,仅此而已。当新的建成时,前一个将被驱逐,一天。您无法管理它,它是无服务器的!

为了坚持大小并不重要,我找到了 2 个有关 Cloud Run 的链接。是的,云跑!!事实上,Cloud Run 和 Cloud Functions 共享相同的后端和相同的行为(您的函数打包在容器中(如前所述)并使用与 Cloud Run 容器相同的逻辑提供服务)

所以,这里是official Google documentation和一个unofficial FAQ由 Cloud Run 大师(Ahmet,Cloud Run @Google 的开发倡导者)维护

最终,大小并不重要,但我发现语言很重要!在 this article also wrote by a Googler ,有NodeJS启动行为的解释

When a module boots, node.js resolves all require() calls from the entry point using synchronous I/O, which can take a significant amount of time if the number of dependencies are large, or if the content itself requires a lot of linking.

因此,这更多的是语言问题和要执行的优化(延迟加载?)而不是平台问题。文章提供了很多优化代码的方法!

关于javascript - 云函数冷启动期间,node_modules 文件夹的大小是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64087796/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com