研究Squid蛮久了,感觉Squid是不是能实现部分http/1.1的功能一直有疑问,根据日志中见到,当你的请求经过Squid后,然后转到 Web服务器时.你会发现Squid中的日志是显示使用的协议为http/1.1,但是Web服务器中的日志是显示的使用的http/1.0.
如果根据Web的日志,Squid是不支持http/1.1的,但是象(keepalive)长连接他是支持的.象Cache- Control,Host这种http.1.1的http头,他是支持的,所以我们可以得出,Squid可以实现部分的http1.1的功能.还不完美. 当然不知2.7会不会好些,据讲squid2.7对http1.1做了相当多的开发.
Squid对KeepAlive的支持
client_persistent_connections: 对客户端长连接KeepAlive.这个参数的支持,默认是打开的.现在的客户端浏览器基本都支持的.
server_persistent_connections:对服务器的KeepAlive打开,注意哦,这个你后面的服务器一定要打开KeepAlive,不然他打开是没用的.
persistent_request_timeout:这个是KeepAlive连接超时时间.建议和后面的Web服务器一样.
Squid有三个和保持连接相关的配置参数:client_persistent_connections, server_persistent_connections, persistent_request_timeout,缺省client_persistent_connections 和 server_persistent_connections是打开的。
运行squidclient -p80 mgr:pconn的结果一般是:
Client-side persistent connection counts:
req/
conn count
---- ---------
0 41388
1 4614958
Server-side persistent connection counts:
req/
conn count
---- ---------
1 739509
2 99170
3 20429
4 5469
client_persistent_connections: 是否打开要看具体应用,反正我是一般不开的,因为现在的IE都是多线程的;打开client_persistent_connections的效果可以通过squidclient -p80 mgr:pconn监控。
server_persistent_connections 对于静态文件型squid,最好打开,也别忘记把后面apache或其它web server的KeepAlive打开;动态服务要随机应变。
persistent_request_timeout 用缺省值基本没问题。