? ?研究squid也有一段时间了,也有一些心得,由于发觉网上介绍squid源码的资料实在太少,所以决心以后将陆续将squid一些代码的研究写成博客,一来作为自己的笔记,用于以后拾起,二来用于和同样研究squid的学者交流分享。
squid是一款缓存internet数据的软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户象要访问一个url时,它向squid发出一个申请,请求squid替它下载,然后squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,squid将缓存的该页面立即传给用户,加速用户的访问。目前,squid?可以代理HTTP,?FTP,?GOPHER,?SSL?和?WAIS?协议,暂不能代理POP,?NNTP等协议。
squid作为源站和客户端之间的桥梁,一方面减轻了源站的负担,另一方面加速了客户端的访问。squid一般做反向代理,当客户端发起web请求时,DNS服务器将访问域名解析为squid服务器的ip地址,这样客户端就会与squid服务器建立tcp连接,将请求数据发送给squid服务器,squid服务器会解析客户请求,然后向源站去请求资源并缓存在本地,然后再将资源返回给客户端。这样,当客户下次进行同样的请求时,就会squid服务器这边直接命中,而不用再去源站请求,这样就加快了访问速度,同时也减轻了源站负担。
squid反向代理一般架构如下所示
1. squid内部框架
? ? squid主美国高防vps要是一个请求/响应体,通过监听事件和回调函数机制进行响应的业务处理。
? ??
2. ProcessHit流程
? ?首先,发送响应头
? ?
?发完响应头之后,开始发body
? ?
3. ProcessMiss流程
? ? 首先,发送请求到源站
? ??
然后,处理从源站收到的响应
? ??
69316412