[英]How to Optimize REST API calls
我正在构建Mash up移动应用程序。 我需要调用我的API提供程序并与Facebook,Twitter等集成。在此过程中,我必须一个接一个地向同一个域(具有不同的路径和查询参数)进行多个REST API调用。 此外,API调用必须是顺序的,因为需要调用下一个调用。 有什么方法可以优化这些http调用以避免往返。 欢迎对java和js的建议
所述要求很广泛。 由于您使用的是公共第三方API,因此在某种程度上限制了可能的优化范围。 你无法做任何事情来加速API,因为它们不属于你。
一般来说,我建议遵循以下指南,这将有助于您提出更好的应用。
在旁注中,您可以参考以下链接,这些链接提供了开发移动应用程序的一般准则。
请注意,这些是一般准则。 有些可能不适用于您的特定用例。
如果您需要第一个API调用的结果以进行下一个API调用,那么您无法在客户端执行任何操作以避免每个API调用的顺序往返。 可能需要现有的API调用可用于将多个调用合并为一个,或者您需要将这样的API调用添加到服务器,或者您需要使用代表您执行此操作的代理服务器。
如果您不需要第一个API调用的结果来进行下一个API调用,但您只想按顺序处理结果,那么您可以立即进行所有API调用并将响应代码构造为按顺序处理它们(保存任何无序到达的结果以便以后处理)。
REST是统一的,因此,过滤器和往返是完成某项功能所必需的。 当谈到优化并将多个客户请求模拟为ONE时,您将慢慢开始面对统一范式的挑战,因为客户端可以比合同在一个统一呼叫中更具体。 虽然可以对REST进行大量优化以将API调用的数量减少到两个甚至一个调用,但有时,您的客户端请求将需要复杂的过滤,这需要在应用其他过滤逻辑之前从服务器获得反馈。
如果您的要求绝对必须要有一个API调用来处理来自服务器而不是客户端的特定客户端请求,而所有过滤器都不适用,那么RPC将是您的方法,它将处理特定的业务逻辑。从服务器到其他微服务(SOA)的宁静方式
真正的问题是,如果您希望保持REST API统一且一致并让客户端实现自己独特的逻辑,那么为什么要让服务器处理此类请求。 REST API服务器应该为客户端提供超链接/超媒体,以指导客户端通过过滤或任何其他实体/资源减少API调用次数的最佳方法。
编程级别 - 使用代码优化/线程/并行编程。
API级别 - 使用分页/过滤器/范围来生成根据客户端需求定制的细粒度数据。
缓存 - 听说某个地方“最快的HTTP调用是你没有做的”就是使用缓存(Memcache / Redis),大多数请求都是读操作,明智地使用缓存控制头也很有用。 这使数据库免于提供昂贵的重复读取请求。 (不确定Etags是否可以使用?)
请求/响应 - 对通过Web传输的数据使用JSON序列化程序和gZip压缩技术。
地理 - 考虑最终用户和原始服务器之间的距离,我们可以使用CDN存储响应的静态内容,以便可以快速地提供服务。
(听说过异步方法/反应式编程可以提高API的性能,但不太确定)
如果你可以使用jQuery,我建议你看看我的插件jQuery Chain ,它可以帮助实现异步调用顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.