简单介绍下squid的工作原理,每一部 Squid 代理服务器上有若颗硬盘,每颗硬盘又分割成多个 patition,每一个 partition 又可建立很多目录(例如:二阶层 64x64 个目录),目录下才放文件( Squid 把它叫 object)。
其中比较重要的是hash table 和digest table,哈希表和摘要表。object就是被缓存的对象。
Squid 的工作太忙了,如果每一个用户端想要的资料,都经过硬盘的文件配置表去拿,速度较慢;所以 Squid 启动之後,会在 RAM 建立一个 Hash Table,记录硬盘中 object 配置的情形。Squid 又在 RAM 中建立一个 Digest Table(摘要表) ,其功能是和其他有合作关的 Squid (Sibling)互相交换 Digest Table,万一用户端想要的资料自己没有时,可以很快的知道哪一部 Squid Server 有资料(Squid 也可以透过 ICP 向其他 Squid 查询,但速度较慢)。但是 Digest Table 本身不小,如果 Server 的内存不够,对外网络带宽不够,反而比 ICP 查询更慢。
为什么哈希表就比较快呢,这个就需要下一步的深入研究了。我的一些简单认识如下: 哈希表又名散列表,其主要目的是用于解决数据的快速定位问题,hash key->value,key是唯一的,找到了key自然也就找到了value,而这个hash table 是保存在RAM中,RAM肯定是要比硬盘(配置文件表)查找内容要快。