分类: 系统运维
2009-03-17 11:06:08
资料来源
http://blog.s135.com/book/squid/
1.每G的磁盘缓冲.约使用32M的内存,具体大小决定于系统体系结构以及object大小.
2.squid使用临时端口对每个连入链接进行服务,所以当服务器负载比较大时,需要对端口数进行优化
3.日志文件路径.
日志分为cache.log,记录squid状态和调试信息
access.log文,记录对squid发起的每个客户请求
store.log,记录进入和离开缓存的每个目标的记录
当需要极端性能的时候,可以将日志记录取消
4.visible_hostname
我们知道没有指定可见主机名,squid将无法启动
其原因是squid在提供服务时,会把主机头插入http via以及x-cache头部
提供用户更详细的信息.而且将会把主机名使用在检测转发环路中
5.日志滚动
6.no_cache
此项用于指定内容是否会被squid缓存.由于此项使用no.在语意上会造成一定的混淆
no_cache allow 是允许指定内容进行缓冲
no_cache deny 是让指定目标不被缓存
7.L1以及L2缓冲
squid存储方式ufs,aufs,和diskd中,会使用L1,L2级目录
L1和L2参数指定了第一级和第二级目录的数量,默认的是16和256
如果针对特定的缓冲对象数量进行服务
则可以通过L1,L2参数的调整,使得每个L2目录下的文件数量保持在一个合理值之内
8.maximum_object_size
如果对象包含Content-Length头部
则SQUID在直接比较两个值之后做出缓冲与否的判断
否则将会在将对象存放在本地磁盘之后再对比文件大小
9.cache_dir写入选择算法
Squid有2个cache_dir选择算法。默认的算法叫做lease-load;替代的算法是round-robin。
least- load算法,就如其名字的意义一样,它选择当前工作负载最小的cache目录。负载概念依赖于存储机制。对aufs,coss和diskd机制来说,负载与挂起操作的数量有关。对ufs来说,负载是不变的。在cache_dir负载相等的情况下,该算法使用自由空间和最大目标大小作为附加选择条件。
round-robin算法也使用负载作为衡量标准。它选择某个负载小于100%的cache目录,当然,该目录里的存储目标没有超出大小限制,并且不是只读的。
10.删除缓存对象
11.删除个别对象
12.删除一组对象
13.删除全部对象
首先必须确认squid没有在运行
14.refresh_pattern
refresh_pattern规则仅仅应用到没有明确过时期限的响应。原始服务器能使用Expires头部,或者Cache-Control:max-age指令来指定过时期限。
15.文件系统优化
设置noatime
设置async
16.squid堆叠
通常把一组互相转发请求的cache(或代理)叫做cache堆叠。把cache堆叠的成员叫做邻居或对等伙伴
邻居cache有2种关系:父子或兄弟。从拓扑上看,父cache在堆叠里位于顶层,而兄弟cache位于同一层。两者真正的不同在于,父cache能为子cache转发cache丢失,然而兄弟cache之间不允许转发cache丢失。
17.HTCP与ICP
使用HTCP相对于ICP的主要优势在于更少的假命中。HTCP有更少的假命中,因为查询消息包含了完整的HTTP请求头部,包含了来自客户端的任何 Cache-Control要求。使用HTCP的主要不足在于HTCP查询更大,要求更多的CPU来处理产生和解析消息。测量显示,HTCP查询大约是 ICP查询的6倍大,这归咎于HTTP请求头部的存在。然而,squid的HTCP响应典型的比ICP响应小。
18.cache_peer_domain中域名的差异
如果是.test.com
则匹配test.com以及所有*.test.com
如果是test.com
则只匹配test.com
19.squid缓冲deflate压缩内容
squid 2.6之后对http/1.1的支持增强.支持ETAG以及Vary.
这样就能够对deflate压缩后的文件进行缓冲
cache_vary on