正在开展电子商务项目,该项目内部有四个项目(部分)
1.)核心 - 有用户信息
2.) cms -contents info
3.) oms - 订单信息
4.)钱包 - 付款信息
用于: -
的 UI -AngularJs
后端 -java
我们有多个REST API调用一个接一个地访问同一个域(具有不同的路径和查询参数)。
有什么方法可以优化api响应时间。
欢迎使用java和AngularJs的建议,而不是缓存给我更多建议,我可以用它来优化api的响应时间。
感激!
我在stackoverflow How to Optimize REST API calls上找到了相同的问题,答案是帮助,但没有找到最适合我的解决方案。
答案 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