我想推出一个AngularJS应用程序的生产版本,我发现Amazon AWS是一个很棒的托管套件。由于AngularJS本质上是静态的,因此可以托管在S3存储上,也可以托管在具有node.js后端的EC2服务器上。
这些解决方案中的任何一个都适合我的部署方法,所以问题是,我(理论上)会从一个或另一个获得更好的性能,为什么?在S3上托管专业网站前端有什么问题吗?有没有人对这两种方法有任何经验?该网站涉及流媒体音频,视频和潜在的许多用户。
任何建议表示赞赏
如果你坚持使用S3 For Front结束审查你的要求,我建议你使用Cloudfront与S3,原因是:
S3无法处理自定义HTTP路由。由于“导出”不是文件S3不知道该怎么做。为了正确处理Angular路由,您必须使用实际的HTTP服务器,如Nginx,Apache,IIS。
您可以阅读这些博客文章以获取更多信息:
How to host your Angular 2 application in AWS with S3
Using AWS CloudFront to serve an SPA hosted on S3
现在转到第二个选项,你提到使用EC2 To host,我认为使用该选项可以让你更好地控制你的环境,也可以更灵活地扩展。
谢谢
1)S3 Bucket + CloudFront(CDN)对于静态文件服务来说非常快。 Angular minified app是一组静态文件,在这里效果最好。对于这些缩小文件的构建,我建议使用CI / CD进程或在本地构建它们,然后将它们上传到S3。
2)EC2需要更多的工作来设置,它消耗资源,静态文件或Angular不需要(除非你使用Angular Universal进行动态内容服务),并且不推荐Node.js用于静态文件(Node.js get's由于它是单线程的,因此阻止静态文件,这是最好的做法。
这是一篇关于这个主题的好文章:https://www.quora.com/Should-I-use-AWS-EC2-to-host-an-Angular-web-app-or-AWS-S3
在S3上托管将涉及通过网络从S3获取Angular代码。
而不是让它'在那里',与EC2,这将(理论上)使其更快。