如果你想让squid缓冲microsoft update的patch的话,请把以下语句添加到squid的设置文件:
- refresh_pattern -i windowsupdate.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
- refresh_pattern -i download.microsoft.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
- refresh_pattern -i au.download.windowsupdate.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
range_offset_limit 20480 KB
range_offset_limit -1 KB
以下是我的摸索过程:
又到了Microsoft一月一度的patch日了,想象着公司的几百台电脑同时在squid上请求相同的patch的情景一定相当的壮观。于是看了下squid服务器上windowsupdate.com的访问日志,乖乖,怎么全部都是TCP_MISS的纪录????
想想不太对劲,为了保证windows update的东西能被squid cache住,我之前已经用refresh_pattern语句强制保存windows update的相关站点的exe和cab文件了,难道我的refresh_pattern配置有问题??看了看squid的配置文件,感觉不太象,于是用wget去抓一下今天的升级补丁,果然没有被squid缓存住:
- Proxy request sent, awaiting response...
- HTTP/1.0 200 OK
- Date: Thu, 13 Sep 2007 04:55:27 GMT
- Content-Length: 7760926
- Content-Type: application/octet-stream
- ETag: "4e8236a3318ec71:803b"
- Last-Modified: Fri, 04 May 2007 09:50:24 GMT
- Accept-Ranges: bytes
- Server: Microsoft-IIS/6.0
- X-Powered-By: ASP.NET
- X-Cache: MISS from cache1
- X-Cache-Lookup: MISS from cache1:3128
- Proxy-Connection: close
这是为什么呢?想了半天没有搞明白,整好到了吃饭时间,先去吃饭吧。结果吃完饭回来,很惊奇的看到如下的情景
乖乖隆个东,看来squid针对microsoft的update站点的refresh_pattern设置还是正确的,那么问题出在哪里呢?
忽然间想起来,现在的microsoft后台补丁升级都是用bits服务的,也就是说,会把一个补丁下载分成多个线程下载的.......而,这个,我好象没有让squid缓存多线程下载的东西,唉
所以最终,针对microsoft update的squid策略反映到squid的设置文件就是这个:
- refresh_pattern -i windowsupdate.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
- refresh_pattern -i download.microsoft.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
- refresh_pattern -i au.download.windowsupdate.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
range_offset_limit 20480 KB #我的squid缓冲的object的上限是20480 KB,所以要squid预先抓取的上限也就设置为 20480 KB,超过了squid不缓冲也没有意义!
range_offset_limit -1 KB
附录:其实本文所提到的对squid的调整在实际应用中是有问题的,为什么呢?请各位同学思考
阅读(1550) | 评论(0) | 转发(0) |