我目前正在为我当前的一个 iPhone 应用程序使用 node.js 构建一个 RESTful Web 服务。目前,系统工作如下:
- 客户端向 node.js 服务器发出请求,服务器进行适当的计算和 MySQL 查找,并返回数据
- 客户端的反应器处理响应并更新 UI
我一直在考虑的一件事是对我的服务器进行多个 API 调用与在 MySQL 数据库中执行多个连接语句然后返回构造对象的调用之间的差异(在性能和最佳实践方面)。
例如:假设我正在加载要在 UI 中显示的用户配置文件。用户拥有个人资料图片、基本信息和新闻提要项目。使用选项一,我将执行以下操作:
- 向服务器发出 getUser 请求,它将在数据库中执行如下查询:
Select * from user join user_info on user.user_id=user_info.user_id left join user_profile_picture on user_profile_picture.user_id=user.user_id
.
然后服务器将返回一个构造的用户对象,其中包含来自每个表的信息 - 客户端等待服务器的响应并立即更新所有内容
选项 2 是:
- 向服务器发出 3 个异步请求:
- 获取用户
- 获取用户信息
- 获取用户配置文件
- 每当收到任何请求时,都会更新 UI
因此,鉴于这两个选项,我想知道哪个会提供更好的可扩展性。
目前,出于以下原因,我正在考虑使用选项 2:
- 每个异步请求都将比选项 a 中的查询更快,因此更快地向用户显示某些内容
- 我也在集成 Memecache,我觉得 3 个单独的调用将更容易缓存特定结果(例如,不缓存用户配置文件,但缓存用户、user_info 和 user_profile_picture)。
有什么想法或经验吗?