观察结果:
我的Web应用程序正在JBoss中运行。
由于图像等原因,每一次用户单击都会生成> 5个HTTP请求。
在服务器上运行netstat会显示为每个单个HTTP请求打开了一个新的TCP连接(基本上,我正在查看来自端口80上客户端IP的TCP连接总数)。
事实:
JBoss HTTP协议设置为1.1。
我已经检查过FF,IE9和Chrome-所有浏览器都执行相同的操作。
我有两个测试环境-一个在Windows7上运行,另一个在CentOS上运行。我在两者中看到相同的行为。
我要完成的工作
在这一点上,我不确定该问题应该附加什么代码,配置详细信息或日志,但是如果您让我知道,我会提供。任何帮助都将受到赞赏。
ps从标题来看,该线程似乎很有希望,TCP连接不会通过HttpURLConnection再次用于HTTP请求,但它主要处理客户端。
在读取HttpURLConnection的InputStream时,是否有任何理由使用以下哪一个而不是另一个?我见过两个例子都用过.
手动缓冲:
while ((length = inputStream.read(buffer)) > 0) {
os.write(buf, 0, ret);
}
Run Code Online (Sandbox Code Playgroud)
的BufferedInputStream
is = http.getInputStream();
bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append(current);
}
Run Code Online (Sandbox Code Playgroud)
编辑我一般都是HTTP的新手,但我想到的一个考虑因素是,如果我使用持久的HTTP连接,我不能只读到输入流是空的吗?在这种情况下,我不需要读取消息长度并只读取该长度的输入流吗?
同样,如果不使用持久连接,那么我所包含的代码在正确读取流方面是否100%好?