最近因为工作的关系,需要在WebServer的前端增加一组服务器,用来将系统中相对静态的页面(例如一两天才会有更新的页面)进行缓存。想到了用squid来进行缓存。
Squid是一种用来缓存Interner数据的软件。其实现机理是这样的:当用户访问一个门户网站中的一篇网页时,其先请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://www.koubei.com/)并向这个页面发出请求。然后,Squid将数据显示到客户端,而且同时复制一份。当下一个用户需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。
SQUID的工作原理:
一:SQUID缓存的存放方式:
每一台Squid代理服务器都有若干个硬盘,每个硬盘又分割成多个分区,每个分区又可建立很多目录,目录下才放文件。
二:SQUID查询方式:
Squid通过查询表的方式来定位某个资源的位置,先查询hash table表(目录,记录Digest tabel 表的信息),定位到Digest table(摘要表,该表记录磁盘的每个分区)。再有Digest table找到相应的页面。
三:SQUID服务器组织方式:
Squid服务器存在两种关系,一种为Child,Parent, 当child squid server没有用户需要的数据时,就parent server发出请求,并持续等待,直到parent server回应自己为止;
另外一种为sibling,当本地SQUID server没有用户请求数据时,会向sibling server发出请求,如果sibling server没有资料则会向上级sibling或者INTERNET发送数据请求。
四:SQUID运作方式:
1. 当Squid Server 没有用户请求的页面时,会先向Sibling 的Squid Server 要页面,如果Sibling没页面,就跳过它直接向Parent 要。
2. 向Parent 要页面,然後一直等,直到Parent 给它页面为止(Parent 自己有的页面或上Internet 去拿)。
3. 没有Parent 时,就自己上Internet 去拿。
4. 如果这三者都拿不到页面,才向用户端回报拿不到页面。