我遇到了与优化REST服务相关的问题。 使用特定数量的请求所需的时间比我预期提供的时间高出十倍。
公共类请求{
String url;
CloseableHttpClient httpClient;
HttpGet request;
HttpResponse result;
String json;
public Request(String URL)
{
url = URL;
httpClient = HttpClientBuilder.create().build();
request = new HttpGet(url);
request.addHeader("content-type", "application/json");
try {
result = httpClient.execute(request);
json = EntityUtils.toString(result.getEntity(), "UTF-8");
}
catch (IOException exception) {
}
}
如果我可以提供任何修改或者我可以考虑哪些库可以更快地处理请求,请告诉我吗?
答案 0 :(得分:3)
考虑在函数外部创建httpClient
。
所以httpClient = HttpClientBuilder.create().build();
只会发生一次。
答案 1 :(得分:0)
这可能是一个评论,但我还不允许添加评论。除非你的应用程序运行在非常稀缺的资源之上,否则你应该使用一个休息框架为你做繁重的工作。它旨在尽可能高效和优化。
优质轻量的是OkHttp。
答案 2 :(得分:0)
如果问题与响应的大小有关,您还可以尝试使用GZIP加速压缩,使用Protobuffers等二进制响应,或同时使用两者。它会使整个事情更快......但你需要尝试比较。
使用Protobuffers,您可以确保更快地进行序列化和传输。但是需要时间来理解Protobuffer的工作原理,并在服务器和客户端上实现它。如果这是你第一次,你可能会引入一些新的错误。毕竟我们是人类。
关于GZIP,它更简单,但如果响应太短,gzip可以使它更大而不是更小。所以,你还需要投入一些时间。