我正在对调用后的较长响应时间进行故障排除,HttpClient.execute(...)
并且我想确保我已在客户端上完成所有操作以优化 HTTP 请求的性能。
对网络的请求需要 1 到 40 秒,但平均约为 4 秒。我认为网络连接不是瓶颈,因为我使用的是强大的 WiFi 连接并且那里的速度没有问题。
HttpClient 的设置如下:
public static final int MAX_TOTAL_CONNECTION = 20;
public static final int MAX_CONNECTIONS_PER_ROUTE = 20;
public static final int TIMEOUT_CONNECT = 15000;
public static final int TIMEOUT_READ = 15000;
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
HttpParams connManagerParams = new BasicHttpParams();
ConnManagerParams.setMaxTotalConnections(connManagerParams, MAX_TOTAL_CONNECTIONS);
ConnManagerParams.setMaxConnectionsPerRoute(connManagerParams, new ConnPerRouteBean(MAX_CONNECTIONS_PER_ROUTE));
HttpConnectionParams.setConnectionTimeout(connManagerParams, TIMEOUT_CONNECT);
HttpConnectionParams.setSoTimeout(connManagerParams, TIMEOUT_READ);
ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(new BasicHttpParams(), schemeRegistry);
sHttpClient = new DefaultHttpClient(cm, connManagerParams);
现在是主观问题:有没有更优化的方法来设置它?
我正在HttpClient.execute(...)
使用时间捕获来包装调用,因此调用下面的所有内容都是execute(...)
平均花费 4 秒以上的地方。