gpt4 book ai didi

node.js - 如何在不重启服务器的情况下将expressjs静态模板部署到AWS?

转载 作者:太空宇宙 更新时间:2023-11-03 23:15:49 25 4
gpt4 key购买 nike

我有express.js 服务器,我将其部署到AWS elastic beanstalk。我使用 Handlebars 引擎进行模板化。模板结构比服务器代码更频繁地更改,因此我希望有一种快速的方法来部署它们。我尝试过在单独的 S3 静态存储桶上托管模板,然后从 Nodejs 代码加载它们。这样,我可以使用 S3 静态部署而不是重新启动所有服务器 Node 的 eb 部署来快速部署对模板的更改。

这是我用于模板加载的 Node.js 服务器代码:

const s3 = new aws.S3();
s3.getObject({Bucket: 'bucketname.com', Key: 'views/' + path}, (err, data) => {
const template = handlebars.compile(data.Body.toString('utf-8'));
resolve(template);
});

这解决了模板部署速度问题,但我不确定它是否不会带来额外的性能影响。我认为由于 S3 和 elastic beanstalk 都是亚马逊服务,因此影响应该很小,但网站基准让我不这么认为。

也许有更好的方法来解决模板部署速度问题?

最佳答案

关于基准测试数字,我相信这是因为您的代码每次需要渲染 View 时都会尝试从 s3 获取 View 模板。这些网络调用会导致开销。

我在之前的一个项目中曾经面临过类似的挑战。然而,在我们的例子中,这些频繁更改的模板的大小和数量在可接受的范围内,并且可以将它们保留在内存中。

我们最终创建了一个不同的 GIT 存储库来存储这些静态模板。我们的 express 服务器将在启动时加载这些模板并将它们缓存在内存中。

我们配置了一个 webhook,以便在每次模板更改(git 存储库中的新提交)时 ping 我们的 express 服务器。然后,服务器使其缓存失效并从同一存储库加载新模板。这样我们就不需要为静态模板中的每次更改都重新启动服务器。

关于node.js - 如何在不重启服务器的情况下将expressjs静态模板部署到AWS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55655539/

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