【发布时间】:2013-06-03 01:34:02
【问题描述】:
我目前正在使用 node.js 为我当前的一个 iPhone 应用程序构建一个 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)。
有什么想法或经验吗?
【问题讨论】:
-
如果您正在构建一个移动应用程序,那么减少 http 调用的次数总是更好,所以我建议只进行一次 http 调用并一次性获取数据
标签: ios web-services node.js rest design-patterns