web版清除squid缓存V1.0[原创]

一直以来蚊子就想解放自己,让想更新图片的人自己去刷新squid,然后看到图片的更新情况,现在终于实现了,我的第一版web方式刷新squid缓存的小应用诞生了,特别说明的是,这个版本的功能还非常的有限,每次只能清除一台squid上的一个url,不过蚊子坚信,之后我会逐渐完善这个小应用。

先来说说这个程序的实现原理吧。squid是用purge来清除缓存,purge是squid专有的一个http的header,默认情况下squid是禁止使用purge的,需要在squid.conf文件中进行配置才可以,配置方法如下

acl localhost src 127.0.0.1/32
acl purge method PURGE
http_access allow purge localhost
http_access deny purge

这样配置完之后就可以使用squidclient在squid本机进行清除缓存操作

squidclient –p port –m purge http_url

其实知道了清除squid缓存用的是purge header,那就可以通过telnet模仿squidclient命令了,方法如下

telnet 127.0.0.1 80
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
输入:
purge http://10.192.14.160/tupian/IMG_0303.JPG HTTP/1.0\r\n

回车后如果返回200 ok说明被刷新了,如果返回的是404 Not Found说明一开始就没缓存

蚊子的这个小应用基本就是遵照上面的这个原理实现的,程序的使用方法很容易,只需要lamp的环境就行,同时,需要授予运行purge_cache程序的机器有执行purge的权限,squid的配置方式和上面的基本相同

acl purge method PURGE
acl purge_host src ip/mask
acl localhost src 127.0.0.1/32
http_access allow purge localhost
http_access allow purge purge_host
http_access deny purge

其中purge_host是允许Purge Cache程序的机器的ip地址

下载了我的那个程序后,需要修改purge_cache.php文件中的

# 定义squid信息
define(“SQUID_HOST”        , “192.168.122.2”);  将这里的ip改成你实际的squid的ip地址
define(“SQUID_PORT”        , “80”);

上张截图吧:

程序可以到下载:http://ishare.iask.sina.com.cn/f/9517901.html

在使用的过程中如果大家有啥好的想法和建议,千万别不好意思说出来。

通过脚本人为有选择性更新nginx的cache[原创]

nginx当下已经成了很热门的玩意了,nginx的cache大有替换squid的趋势,蚊子这边当下也用上了,nginx配置cache的我就不细说了,网上相关的文章挺多的

今天主要是表表nginx的清除cache的方法,nginx官方推荐的addones是Cache Purge Module,但蚊子配上发现并不是很好用,估计可能我没掌握要领吧,索性也不去理会了

闲来没事看了一下nginx的cache文件,发现和squid类似,都是hash的,那这样必然能在cache文件中找到想要的东西,于是就用strings看了一下,果然发现了缓存的页面,于是就有了下面的这个脚本

将文件存成clear_cache.sh,并赋予可执行权限

使用方法1:清除所有.jpg的连接

/path/clear_cache.sh .jpg$

使用方法2:清楚所有www.wenzizone.cn域名的链接

/path/clear_cache.sh www.wenzizone.cn

用php代码清空squid缓存下的指定文件[转]

PURGE 是一个特殊的HTTP请求方法。它是 Squid 的专有方法,没有在任何RFC 里定义。它让管理员能强制删除缓存对象。既然该方法有些危险,squid 默认拒绝PURGE 请求,除非你定义了ACL 引用了该方法。否则,任何能访问cache 者也许能够删除任意缓存对象。我推荐仅仅允许来自localhost 的PURGE:
acl Purge method PURGE
acl Localhost src 127.0.0.1
http_access allow Purge Localhost
http_access deny Purge (squid.conf摘要)

以下是使用purge删除指定文件的两个函数:

这样只需要在代码里使用 purgeFile(’/xxx.gif’);即可将上述两个服务器中指定的路径文件缓存删除。

原帖:http://hi.baidu.com/farmerluo/blog/item/65194710ca8780f4c2ce794b.html