我在調用HttpClient.execute(...)
之後很長的響應時間,我想確保我已經完成了客戶端上的所有工作,以優化HTTP請求的性能。Android HttpClient和ThreadSafeClientConnManager性能
對網絡的請求需要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+秒花費。
運行wireshark /鯊魚線,並告訴我們從那裏請求發生了什麼。 – 2012-07-23 23:51:58
也嘗試在連接參數上設置TcpNoDelay。 – 2012-07-23 23:57:13
可能還設置了HttpConnectionParams.setStaleCheckingEnabled(httpClient.getParams(),true); – 2012-07-23 23:58:00