2.通过PURGE头刷新缓存,这需要Suqid配置ACL以允许PURGE请求头,实例如下:
acl AdminBoxes src 127.0.0.1 172.16.0.1 192.168.0.1
acl Purge method PURGE
http_access allow AdminBoxes Purge

http_access deny Purge
打开配置之后可以使用如下的请求头来完成删除操作
PURGEHTTP/1.0
Accept:*/*
上个例子代码中,把HEAD修改为PURGE即可,如下:
$head = "PURGE {$url_component['path']} HTTP/1.1\r\n";
$head .= "Accept: */*\r\n";
$head .= "Host: {$url_component['host']}\r\n";
$head .= "Cache-Control: no-cache\r\n";
$head .= "\r\n";
3.通过使用多播HTCP包来完成Squid清理,这是MediaWiki目前正在使用的方法,当wiki更新时用于更新全球的Squid缓存服务器,实现原理为:发送PURGE请求到特定的多播组,所有Squid服务器通过订阅该多播组信息完成删除操作,这种实现方式非常高效,避免了Squid服务器处理响应和建立TCP连接的开销。参考资料:MulticastHTCPpurging
发送no-cache头的方式在很多情况下不适用,因为大多数站长都会配置ignore-reload来阻止no-cache和reload头以提高Squid的命中率;通过适当的权限控制PURGE清理将是一种非常简单可行的方式,考虑到安全问题我们可以仅允许特定的主机进行PURGE清理操作,对第1,2种方式进行简单的变通就可以用于管理较数量的前端缓存服务器-我们可以在被允许的主机上提供一个专门的后台刷新队列,这个刷新队列在接收到刷新操作时就多线程的向前端服务器发送删除指令,这样就达到了同步刷新的效果。第3种方式没有进行过尝试,因为需要安装相应的补丁,并进行配置,操作成本相对较高,在服务器数量特别巨大的情况下这无疑是一种非常高效的实现方式。squid 缓存原理
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33116-2.html
枷锁在一根根往自己脖子上套
被警告后也就撤出了