深入探讨持久HTTP连接与Servlet生成GIF图像技术
1. 持久HTTP连接的应用
1.1 HTTP 1.0的问题
HTTP 1.0存在一个显著问题,即每个请求都需要单独的套接字连接。当获取包含大量小图像或许多小程序类的网页时,与实际文档下载时间相比,建立所有连接的开销可能相当大。
1.2 “keep - alive”扩展与持久连接
为解决上述问题,许多浏览器和服务器支持“keep - alive”扩展。使用此扩展时,服务器会告知浏览器响应中包含的字节数,然后在返回文档后将连接保持一段时间。客户端通过监控接收到的字节数来检测文档是否加载完成,并在同一套接字上重新连接以进行进一步的事务。这种持久连接在HTTP 1.1中成为标准,符合要求的服务器应使用持久连接,除非客户端明确指示不使用(通过“Connection: close”请求头,或间接发送指定HTTP/1.0而非HTTP/1.1且未规定“Connection: keep - alive”的请求)。
1.3 Servlet利用持久连接
如果Servlet嵌入支持持久连接的服务器中,就可以利用这一特性。服务器应处理大部分过程,但它无法确定返回文档的大小。因此,Servlet需要通过 response.setContentLength 方法设置 Content - Length 响应头。Servlet可以通过 ByteArrayOutputStream 缓冲输出,使用字节流的 size 方法获取字节数,然后通过将Servlet的输出流传递
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



