Ios 多个RESTful Web服务调用与MySQL连接

Ios 多个RESTful Web服务调用与MySQL连接,ios,web-services,node.js,rest,design-patterns,Ios,Web Services,Node.js,Rest,Design Patterns,我目前正在为我当前的一个iPhone应用程序使用node.js构建一个RESTful web服务。目前,该系统的工作原理如下: 客户端向node.js服务器发出请求,服务器进行适当的计算和MySQL查找,并返回数据 客户端的反应器处理响应并更新UI 我一直在思考的一件事是对我的服务器进行多个API调用与在MySQL数据库中执行多个join语句然后返回构造对象的一个调用之间的差异(在性能和最佳实践方面) 例如: 假设我正在加载要在UI中显示的用户配置文件。用户有个人资料图片、基本信息和新闻提要

我目前正在为我当前的一个iPhone应用程序使用node.js构建一个RESTful web服务。目前,该系统的工作原理如下:

  • 客户端向node.js服务器发出请求,服务器进行适当的计算和MySQL查找,并返回数据
  • 客户端的反应器处理响应并更新UI
我一直在思考的一件事是对我的服务器进行多个API调用与在MySQL数据库中执行多个join语句然后返回构造对象的一个调用之间的差异(在性能和最佳实践方面)

例如: 假设我正在加载要在UI中显示的用户配置文件。用户有个人资料图片、基本信息和新闻提要项。使用选项一,我将执行以下操作:

  • 向服务器发出getUser请求,服务器将在数据库中执行如下查询:
    在用户上选择*从用户加入用户\u信息。用户\u id=用户\u信息。用户\u id左加入用户\u配置文件\u图片用户\u id=用户。用户\u id

    然后,服务器将返回一个构造的用户对象,其中包含来自每个表的信息
  • 客户端等待服务器的响应,并立即更新所有内容
备选方案2将是:

  • 向服务器发出3个异步请求:
    • getUser
    • getUserInfo
    • getUserProfile
  • 无论何时收到任何请求,都会更新UI
因此,考虑到这两个选项,我想知道哪一个会提供更好的可伸缩性

目前,出于以下原因,我正在考虑选择方案2:

  • 每个异步请求将比选项a中的查询更快,因此向用户显示某些内容的速度更快
  • 我还集成了Memecache,我觉得3个单独的调用将更容易缓存特定结果(例如,不缓存用户配置文件,而是缓存用户、用户信息和用户配置文件图片)

  • 有什么想法或经验吗?

    我认为这里的关键问题是这些API调用是否总是一起进行。如果是,则设置单个端点的连接并执行连接更有意义。但是,如果情况并非如此,则应单独保存

    现在,您可以做的当然是使用查询语法,让您指定特定端点是否应提供更多数据,并将其与联接相结合。这确实需要更多的输入,但这可能是值得的,因为这样您就可以最小化请求,并且仍然可以得到一个适应性强的系统


    在服务器端,两种方法中的任何一种都不可能明显比另一种慢,除非您一次处理数千行

    我认为这里的关键问题是这些API调用是否总是一起进行。如果是,则设置单个端点的连接并执行连接更有意义。但是,如果情况并非如此,则应单独保存

    现在,您可以做的当然是使用查询语法,让您指定特定端点是否应提供更多数据,并将其与联接相结合。这确实需要更多的输入,但这可能是值得的,因为这样您就可以最小化请求,并且仍然可以得到一个适应性强的系统


    在服务器端,这两种方法中的任何一种都不太可能明显比另一种慢,除非你一次处理数千行

    如果你正在构建一个移动应用程序,那么最好减少http调用次数,因此我建议只进行一次http调用,并在一次GOI中获取数据如果你正在构建一个移动应用程序,那么它的减少http调用的次数总是更好的,所以我建议只进行一次http调用,然后一次性获取数据