EC2或S3主持AngularJS应用程序?

Leo*_*eon 10 hosting amazon-s3 amazon-ec2 amazon-web-services angularjs

我想启动一个AngularJS应用程序的生产版本,我觉得亚马逊的AWS是一个真棒主机套件.由于AngularJS基本上是静态的它可以在S3存储托管,或者用Node.js的后端的EC2服务器上.

这些解决方案中的任何一个都适合我的部署方法,所以问题是,我(理论上)会从一个或另一个获得更好的性能,为什么?在S3上托管专业网站前端有什么问题吗?有没有人对这两种方法有任何经验?该网站涉及流媒体音频,视频和潜在的许多用户.

任何建议表示赞赏

Kus*_*yas 7

如果您坚持使用 S3 For Front end 在查看您的要求时,我建议您使用Cloudfront With S3 ,原因是:

S3 无法处理自定义 HTTP 路由。由于“导出”不是文件,S3 不知道该怎么做。为了正确处理 Angular 路由,您必须使用实际的 HTTP 服务器,如 Nginx、Apache、IIS。

您可以阅读这些博客文章了解更多信息:

如何使用 S3 在 AWS 中托管您的 Angular 2 应用程序

使用 AWS CloudFront 为 S3 上托管的 SPA 提供服务

现在转到您提到的使用 EC2 To host 的第二个选项,我认为使用该选项可以让您更好地控制您的环境,并且在扩展方面也更具灵活性。

谢谢

  • 在玩弄 Cloudfront 之后,我发现 S3 + Cloudfront 的性能非常好:) (2认同)
  • 在写这篇文章后的某个时候,我发现自己又回到了 EC2,因为无需学习 Lambda 就可以实现对 URL 重写的更好控制。然而,S3 + Cloudfront 比购买另一台 EC2 服务器便宜得多(免费)。 (2认同)

小智 6

1) S3 Bucket + CloudFront (CDN) 对于静态文件服务来说非常快。Angular 缩小的应用程序是一组在这里效果最好的静态文件。对于这些缩小文件的构建,我建议使用 CI/CD 过程或在本地构建它们,然后将它们上传到 S3。

2)EC2需要更多的设置工作,它消耗资源,静态文件或Angular不需要(除非您使用Angular Universal进行动态内容服务),并且不建议静态文件使用Node.js(Node.js get的阻塞,因为它是单线程的,因此最好的做法是让静态文件远离它)。

这是一篇关于该主题的好文章:https : //www.quora.com/Should-I-use-AWS-EC2-to-host-an-Angular-web-app-or-AWS-S3