如何优化HTTP API?

时间:2011-01-23 16:23:48

标签: php apache http rest scalability

我们使用HTTP从应用程序客户端构建了一个庞大的API到我们的php服务器。 API只需在带有POST参数的php中完成。但是,我们正在寻找使客户端在移动设备上更快地调用API的方法。我们可以采取哪些措施来优化它?

1)我听说REST API非常受欢迎并被大公司使用。如何将HTTP POSTS转换为REST API?
2)如何最小化HTTP头和开销量?

我们可以采取哪些其他步骤来提高API调用的速度?

2 个答案:

答案 0 :(得分:2)

REST框架(以及api)只是简单http调用的包装器。该框架旨在维护REST架构主体(Google Roy Fieldings对非REST的内容进行咆哮),并且还包括一些低级行为,如响应编码,编组,解组等。

所以我想说的是REST框架无法使你的应用程序比现有的更快。它只会使编程变得更容易。

就HTTP Header而言,HTTP标头应仅包含处理和元信息(如auth和accept)。您还有什么在http标头中。 (这是框架可以提供帮助的地方,例如它可以为您处理accept参数)

答案 1 :(得分:1)

REST是一种架构风格,它指导了HTTP的设计。它所采用的方法之一是通过缓存约束,它可以提供一点延迟以提高效率;也就是说,一些请求为缓存组件支付了一点额外的开销,因此绝大多数请求根本不会到达网络。如果做得很周到,这种方法可以极大地提高网络应用程序的效率。

不幸的是,在您尝试执行此项目生命周期的后期,切换架构样式会变得越来越昂贵,而且听起来您不仅已经设计了系统而且已经构建了它。听起来你的设计目标之一就是极低的延迟;我非常怀疑REST风格符合您的设计目标。

因此,我们只需要优化RPC over HTTP。这可以通过以下技术完成(也可能是我不知道的其他技术):

  1. 压缩。您可以“gzip”您的回复并通过Content-Encoding响应标头声明它们。例如,请参阅http://www.webcodingtech.com/php/gzip-compression.php,以便在PHP中执行此操作。
  2. “缩小”。通过删除无关紧要的空格,修改变量名等来缩小HTML,Javascript和CSS的大小。网上有很好的工具。
  3. 优化图片。无论是按大小还是通过压缩比。
  4. 头部争吵。即使您没有使用REST样式,HTTP仍然针对大粒度有效负载进行了优化。对于绝大多数响应,与响应主体的大小相比,标题的大小是微不足道的。但是,如果您完全手动控制Web服务器发出的标头,则一些微小的响应可能适合典型的1500字节MTU。但是,并非所有服务器端Web框架都允许这样做,并确保您不会删除正确互操作性所需的标头。
  5. 向移动客户端推送较少的信息。分解大页面并将其链接起来。这将更好地适用于移动客户端上的屏幕空间。当然,它会对服务器和代理造成严重破坏,并最终在整体效率下降的情况下融化互联网,但你可以让你的孩子担心这一点。为超级用户提供指向“非移动版”的链接。