如何优化REST API响应时间

时间:2017-10-28 06:07:15

标签: java angularjs rest optimization response-time

正在开展电子商务项目,该项目内部有四个项目(部分) 1.)核心 - 有用户信息
2.) cms -contents info
3.) oms - 订单信息
4.)钱包 - 付款信息

用于: -
UI -AngularJs
后端 -java

  • 没有第三个paty api电话。
  • 缓存已使用
  • 上述四个项目中只有http调用。

我们有多个REST API调用一个接一个地访问同一个域(具有不同的路径和查询参数)。

  

有什么方法可以优化api响应时间。

欢迎使用java和AngularJs的建议,而不是缓存给我更多建议,我可以用它来优化api的响应时间。

感激!

我在stackoverflow How to Optimize REST API calls上找到了相同的问题,答案是帮助,但没有找到最适合我的解决方案。

4 个答案:

答案 0 :(得分:1)

你的当前响应时间是多少?你的目标是什么?

一个好的缓存Api应该在java级别上工作1-30ms左右取决于内容的数量和你使用的cachong的类型。

答案 1 :(得分:1)

  

使用部分资源

     

提高API调用性能的一种简单方法是发送和   仅接收您感兴趣的数据部分。这样可以   您的应用程序避免传输,解析和存储不需要的字段,   所以它可以更有效地使用包括网络,CPU和内存在内的资源。

     

有两种类型的部分请求:

     

部分回复:

     

您指定要在响应中包含哪些字段的请求(使用字段请求参数)。       修补程序:只发送要更改的字段的更新请求(使用PATCH HTTP谓词)。       以下各节提供了有关提出部分请求的更多详细信息。    部分响应默认情况下,服务器发回完整的表示   处理请求后的资源。为了获得更好的性能,您可以提问   服务器只发送你真正需要的字段并获得部分字段   反而回应。   要请求部分响应,请使用字段请求参数进行指定   您想要返回的字段。您可以将此参数用于任何请求   返回响应数据。

     

请注意,fields参数仅影响响应数据;它不是   影响您需要发送的数据(如果有)。减少数据量   在修改资源时发送,请使用补丁请求。

Example
The following example shows the use of the fields parameter with a generic 
(fictional) "Demo" API.

Simple request: This HTTP GET request omits the fields parameter and returns 
the full resource.

https://www.googleapis.com/demo/v1?key=YOUR-API-KEY
Full resource response: The full resource data includes the following 
fields, along with many others that have been omitted for brevity.

{
  "kind": "demo",
  ...
  "items": [
  {
    "title": "First title",
    "comment": "First comment.",
    "characteristics": {
      "length": "short",
      "accuracy": "high",
      "followers": ["Jo", "Will"],
    },
    "status": "active",
    ...
  },
  {
    "title": "Second title",
    "comment": "Second comment.",
    "characteristics": {
      "length": "long",
      "accuracy": "medium"
      "followers": [ ],
    },
    "status": "pending",
    ...
  },
  ...
  ]
}
  

请求部分响应:对此相同资源的以下请求使用fields参数来显着减少返回的数据量。

     

部分响应:响应上述请求,服务器发回一个仅包含种类信息的响应以及一个简化的项目数组,该数组仅包含每个项目中的HTML标题和长度特征信息。   

     

响应状态:200 OK

答案 2 :(得分:0)

似乎您已经采取了几乎所有必要的步骤来提高性能并缩短响应时间。

为了使速度更快,请确保仅从用户请求中收集足够的数据。不要忘记回复唯一真正需要的数据,如果有一个响应实体返回十个数据字段但只需要其中两个。

答案 3 :(得分:0)

尝试对Java-spring项目使用以下配置:

# Enable response compression
server.compression.enabled=true

# The comma-separated list of mime types that should be compressed
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json

# Compress the response only if the response size is at least 1KB
server.compression.min-response-size=1024

# Enable HTTP/2 support, if the current environment supports it
server.http2.enabled=true