我在下面幾行中使用了一些東西:在一行中做一個3個HTTP請求(一個接一個),然後等待一個給定的時間,然後再循環做3個HTTP請求。

我正在使用keep-alive,它基本上也正常工作,但在第一個HTTP請求上,每次我從3 HTTP請求開始時都會有2秒的懲罰。只有第一個HTTP請求有這2秒的懲罰。如果我將連續HTTP請求之間的等待時間降低到200毫秒,所有請求都很快,而沒有第一個請求看到這2秒的懲罰。

顯然這聽起來像第一個請求可能不使用保持連接,但事實並非如此。我在服務器上運行tcpdump,並且可以清楚地看到所有請求都使用相同的TCP連接而不關閉,並再次建立新的連接。服務器上的保持活動狀態設置爲60秒,而等待應用程序的時間爲5秒。另外,當我切換到WIFI這種行爲,我看不到。與此同時等待所有請求都很快。

在HTTP連接的代碼是使用HttpURLConnection類和如下所示:

m_res.error = null;

HttpURLConnection connection;

try {

connection = (HttpURLConnection)(new URL(m_url + "/" + m_call.command).openConnection());

connection.setDoOutput(true); // triggers POST.

connection.setDoInput(true);

connection.setRequestProperty("Accept-Charset", m_charset);

connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + m_charset);

connection.setRequestProperty("Connection", "Keep-Alive");

connection.setRequestProperty("Accept-Encoding", "gzip");

//connection.setChunkedStreamingMode(0);

OutputStream output = null;

try {

output = connection.getOutputStream();

output.write(m_call.query_string.getBytes(m_charset));

InputStream response = null;

try {

response = connection.getInputStream();

if ("gzip".equals(connection.getContentEncoding())) {

response = new GZIPInputStream(response);

}

}

catch (IOException e) {

response = connection.getErrorStream();

}

if (response == null) {

m_res.error = "Connection Error";

}

else {

m_res.body = getAsString(response);

m_res.status = connection.getResponseCode();

}

}

catch (IOException e) {

e.printStackTrace();

m_res.error = "Connection Error";

}

finally {

if (output != null)

try {

output.close();

} catch (IOException logOrIgnore) {}

}

}

}

2012-08-23

domcyrus

+0

和您的問題是... –

+0

爲什麼數據連接上的第一個http請求如此緩慢? –

android http 慢,android httpurlconnection數據連接速度慢相关推荐

  1. Inno Setup 打包安裝判斷是否安裝.net freamework 3.5 和 access2007的數據連接

    [code] //安裝前方法 function InitializeSetup: Boolean;var Path:string ;ResultCode: Integer;beginif RegKey ...

  2. struts數據庫訪問

    來源:http://big5.webasp.net/article/18/17813.htm Struts HOW-TO 系列 ++怎樣訪問數據庫++ [訪問一個數據庫] 在一個其於Struts的應用 ...

  3. FMDB與SQLite 數據庫應用示範:打做一隻簡單的電影資料庫 App

    原文:http://www.appcoda.com/fmdb-sqlite-database/ 作者:GABRIEL THEODOROPOULOS 譯者:kmyhy 通常在 App 中使用數據庫并處理 ...

  4. android 索引怎么使用情况,android 數據庫查詢中使用索引-大幅提高數據庫操作速度...

    參考: http://blog.csdn.net/dongyuxi1987/article/details/8239739 1.數據庫索引簡介 回憶一下小時候查字典的步驟,索引和字典目錄的概念是一致的 ...

  5. jpa oracle mysql,JPA-Oracle-Mysql連接數據庫配置

    //...省略datasouce class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" ...

  6. mysql使用从c3p0_使用c3p0連接池操作mysql數據庫中文亂碼解決辦法

    今天在一台新的CentOS機器上使用c3p0連接池操作mysql數據庫出現中文亂碼問題,具體表現為:查詢時無中文亂碼問題,寫數據時中文亂碼,查看了機器上數據庫字符集也是UTF8,應該不會出現中文亂碼才 ...

  7. rodbc 连接oracle,R語言 使用RODBC連接oracle數據庫

    使用R語言有多種包可以連接oracle數據庫,我今天在這里講一下使用使用RODBC連接oracle數據庫. 1. 如果你的本地是windows系統的話,你需要安裝oracle客戶端. 2. 然后需要在 ...

  8. python3.5 连接mysql_python3.5 連接mysql本地數據庫

    前期准備工作: 安裝python的模塊,網上大部分讓安裝mysqldb模塊,但是會報錯,原因是python3.5不被其支持: 請看該鏈接 我們也可以這樣解決: 直接執行:sudo pip3 insta ...

  9. ttbf 慢 php,連接數據庫不同方式會影響TTBF快慢

    正在研究php框架,突然發現一個奇特的問題:框架中php代碼連接數據庫使用PDO和mysqli,盡然會導致頁面加載速度上產生很大的差距.一開始還以為是框架本身造成的這種現象,所以在本地寫了一個基礎的測 ...

最新文章

  1. Swift 字典转数组
  2. 一点一滴培养你的领袖气质
  3. 1022: [SHOI2008]小约翰的游戏John【Nim博弈,新生必做的水题】
  4. <table/>设置列宽度无效的问题
  5. nsq php,NSQ 最佳实践
  6. 新生儿肺炎也许不发烧咳嗽
  7. Golang 入门 : Go语言介绍
  8. Linux系统管理---linux计划任务和日志的管理
  9. scanf指定分隔符号
  10. 荣耀热键驱动无法安装
  11. easyexcel 检查表头是否匹配_利用easyexcel生成excel文件-自定义表头与数据栏对应的处理方式...
  12. RHCE 22个考点
  13. call指令和ret指令【笔记+详解】
  14. 什么是java实例化_JAVA实例化是什么意思?
  15. 中文NER任务简析与深度算法模型总结和实战展示
  16. 搜索:搜索+优先队列
  17. OpenKruise原理介绍和安装
  18. iPhone又被拼多多砍了,错过一天等一年?网友:别急,天天双11
  19. Matlab一句话画三维应力云图
  20. 阿宽食品:“方便食品第一股”争夺战继续

热门文章

  1. 【mac】Mac 安装 RabbitMQ
  2. 【Clickhouse】Clickhouse Cannot create table with column ‘Int256‘ because experimental bigint types
  3. Spring: Bean 注册 - BeanDefinitionRegistry
  4. gradle下载的依赖包位置
  5. Drools 6.5 :入门程序
  6. 计算机大学生学生证,电子学生证运行一月争议多:学生感觉被监控
  7. 复盘SpringBoot中定时任务和异步线程池
  8. 二进制十六进制相互转换
  9. deepin中自定义安装的软件如何加入到启动器
  10. pytorch,cuda8,torch.cuda.is_available return flase (ubuntu14)