我正在做一个学习项目。我已经使用本地和谷歌策略在nodejs中构建了一个身份验证系统。前端是一个react应用程序。托管有两种选择
- 在静态托管提供商(如netlify或github页面(上部署前端,并将后端节点应用程序部署到heroku
- 使用公用文件夹中的前端代码在heroku上部署后端和前端,并使用express.static("public"(
我对这两种方法都感到困惑,在互联网上找不到答案。如果你能解释这两种方法的优缺点,以及哪种方法适合在什么条件下,那将是非常有帮助的。文章链接也很感激。提前谢谢。
第一种方法
优点:
- 从不同服务器提供的静态内容具有更大的优化潜力(使用S3/CloudFront边缘缓存(,nginx在提供静态文件方面速度极快
- 一台服务器上的网络流量较少(内容可以从多个点并行提供(
- nodejs应用程序不必"浪费"时间为永远不会更改的静态文件提供服务,因为它有更多的时间用于实际的动态内容
缺点
- 需要更多的配置,因为它在不同的源上运行(处理CORS,适当的安全设置(
- 过早优化
- 更多的维护
第二种方法
优点:
- 更易于部署
- 在大多数情况下足够快
我可以根据我工作的公司给你举一个例子。为了安全和方便,我们在不同的服务器上前后分开。我们阻止所有ip向后端发出请求,只释放前端服务器的ip。我们分别为每台服务器创建特定的规则,如果其中一台服务器因任何原因停止,它不会影响另一台服务器。
但这个决定在很大程度上取决于您开发的应用程序类型,以及您的项目所需的结构。但是要考虑以下几点:安全性、可维护性和便利性。