http keep alive

2、http:

请求-响应语义:client发送一个请求,服务器返回响应信息。最初每个请求与server创建一个新的socket连接,用该连接发送请求,获取相应信息,关闭连接。

优点:简单,易于描述、理解、编程。

缺点:效率低。

3、keep alive:

HTTP/1.0,请求增加头Connection:Keep-Alive,server在响应增加头:Connection:Keep-Alive。一次请求完成后,连接保持,clent再发送一个请求时,使用同一个连接,直到client或者server认为会话结束,决定关闭该连接。
HTTP/1.1 ,默认keep-alive,否则需在头中加Connection:close;Connetion:Keep-Alive无意义。
不可靠性:HTTP是一种无状态的协议,多次请求之间互相独立,keep-alive也同样,也没有保证client或者server会保持连接open;即使在1.1中,所能做到的也只是可能得到一个连接正被关闭的信息,因此keep-alive不是你编程时可以依赖的。
Keep-Alive与POST:在HTTP/1.1协议中声明POST的body后不应有任何字符,但也允许有些浏览器在其后加入CRLF。有两种方法处理这种问题:在POST时不用keep-alive,或者server忽略CRLF。

4、实现keep-alive
Java-client端:java.net.HttpURLConnection类自动实现了keep-alive,不需要也不能干预。原理是建立client连接池。
Java-server端:HttpServlet, HttpServletRequest, HtppServletResponse几个类自动实现keep-alive,编程时可以设置respone的content lenth,如果设置了相应内容长度,或者server端缓存的内容长度大于4k,client支持keep-alive,则使用keep-alive。

posted @ 2012-09-12 17:57  TovenZhou  阅读(859)  评论(0编辑  收藏  举报