node.js - 使用 Express 提供静态文件还是使用 Express 仅访问后端?
问题描述
出于什么原因,您会使用路由通过 Express 提供静态 HTML/CSS/JS 文件,而不是直接点击这些文件,然后使用 Express 纯粹与后端交互?
例如,我可以直接访问一个网页,即www.test.com/login.html,我在某处托管该网页,然后使用 JS 向托管在某处的 Express 服务器发出获取请求。
或者我可以仅将我的域指向通过其 IP 地址与 Express 服务器交互,并让 Express 提供这些静态文件。
出于什么原因我会使用其中一个?
希望这是有道理的,如果我错过了一个技巧,请道歉 - 这一切都相对较新!
谢谢
解决方案
出于什么原因,您会使用路由通过 Express 提供静态 HTML/CSS/JS 文件?
如果您的文件是真正的静态文件(其中根本没有动态内容),那么谁为它们提供服务并不重要。你可以在任何地方为他们服务。然后,您必须管理两个域并确保您的服务器已正确设置以供CORS
访问。您甚至可以使用同一个域并使用像 NGINX 这样的代理,它只提供静态内容,同时将其他所有内容转发到您的 Express 服务器。
如果您正在动态生成任何内容(例如许多使用模板引擎并从服务器从数据库生成 HTML 内容的网站),那么从 Express 服务器提供您的内容在世界范围内都是有意义的。
我不建议通过直接 IP 地址与您的 Express 服务器连接,因为在扩展、更改托管设施、负载平衡等方面,这远不如使用 DNS 名称灵活......所以,如果你要去从其他地方提供静态内容,然后在同一域上使用代理或使用两个单独的域。
从 Express 服务器上获取静态内容的主要原因是当您想要提高可伸缩性并且您当前的负载对于 Express 服务器来说太大了。在这种情况下,通常最简单的提高可扩展性的方法是将静态文件服务转移到另一个系统。如果您的网站规模仍然很小,那么我不建议让事情变得比他们需要的更复杂。在小范围内保持简单。随着您的负载增加,然后投资于将静态服务剥离给另一个主机。
推荐阅读
- java - 从包含 kjb 进程调用的 java 代码运行 sh 文件
- c++11 - 在我的二叉搜索树中搜索右子树时出现代码错误
- node.js - 全局安装包时,为什么在 ArmV7 docker 映像中 npm install 失败?
- node.js - Reddit 通过 API 投票时给出 403
- android - InflateException 和应用程序在 android Xiaomi Redmi note 4 中崩溃
- r - 多图保存png
- sharepoint - SharePoint 2013 Office Web 应用程序预览不起作用
- sql - SQL WHERE - 列(值)不存在
- c# - ?.Invoke(x) 的性能是否与空检查 + 直接调用一样好
- java - ViewPager 不工作选项卡式活动 - 如何解决这个问题?