首页 > 清除缓存

最近蚊子我思考了一下,要是想让我的那个web版清除缓存程序支持对指定文件,对指定域名缓存的清除,那就只能使用c/s模式,那s端的脚本就是关键。

这篇文章只是蚊子下一步工作的一个铺垫,只能算是前期的一个准备工作。在s端,蚊子决定使用perl脚本来完成,所以,这里先写了一个使用perl在清除指定文件的脚本。为了方便其他人使用,特把这个脚本share出来。 继续阅读→

阅读全文

在1.2.1版本中,蚊子增加了squid服务器分组功能,方便了清除在不同squid服务器上的url

但相对于维护squid服务器组的文件,就有点不方便了

于是蚊子在这个版本中增加了在线编辑squid组服务器配置文件的功能,方便管理人员在线就可以对squid组配置文件进行修改编辑操作。

温馨提示:由于蚊子的这套程序暂时没有做登陆认证什么的,所以任何web可以访问程序的人都可以编辑配置文件,建议放置在内网使用。

发张v1.2.2版本的截图:

1.2.2版本下载地址:

更新说明:

增加了css文件,将css文件夹放置到和purge_cache.php文件平级目录下
增加了editconfig.php文件,放置到和purge_cache.php平级目录下
其他文件覆盖更新即可

阅读全文

晚上的时候,蚊子又对这个程序进行了小小的更新。

我相信很多公司的squid服务器都是按应用划分成组,每一组squid服务器提供着某一个或几个域名的cache服务,这样的话,如果用1.2版本就有点麻烦了,需要准备多个配置文件。

于是,蚊子在1.2版本的基础上进行的调整,增加了squid组的功能,这样可以通过下拉菜单选择不同的squid组进行不同域名的url的更新了。方便了更新操作。

config.ini文件的内容如下所示

[squid_group1]

squidhost1 = 192.168.28.130:3128
squidhost2 = 192.168.28.201:3128

[squid_group2]

squidhost1 = 192.168.28.202:3128
squidhost2 = 192.168.28.203:3128

[]中是组名

紧跟着的每行是squid服务器列表

组名和服务器名可自行更改,理论上可以使用中文,但蚊子没有对中文的配置测试过,所以不保证能正常使用。

来一张1.2.1版本的截图:

1.2.1版本下载地址:

更新没有啥注意事项,只需要下载后覆盖原来文件即可

阅读全文

今天蚊子又对这个程序进行了更新,更新变化不是很大,主要是增加了在多个squid上更新多个url地址这个功能。

另外目前我有一个想法,就是,是否需要每次都显示那么详细的什么url在什么squid上更新,是不是就给一个统一的提示说明就好,提示使用者请求都被更新,当有更新失败的再详细提示。这样是不是更人性化一些。

另外在网上看squid相关的资料,貌似官方也没出个按关键词或匹配所给字词的url的清除方法,看看有没有什么其他的折中的方式吧,又得啃文档了,估计还得尝试着去看看源码呢。

发张1.2版的截图:

 

1.2版本的下载地址:

更新没啥注意事项,直接覆盖原来文件就行了。

阅读全文

蚊子今天有时间,把这个程序更新了一下,变动不是很大,增加了一个config.ini的文件。通过这个文件来增加删减squid服务器,这个文件内容如下

[squid_host]

squidhost1 = 192.168.122.1:80

squidhost2 = 192.168.122.2:80

这样就可以对多台squid进行清除缓存

对呀缓存的清除这块暂时没有变化,还是只能清除一个url

对于已经下载了1.0版的用户来讲,更新还是很方便的,只需要下载压缩包,解压后覆盖原来的php文件即可。

发张新版的截图:

下载地址:http://ishare.iask.sina.com.cn/f/9541707.html

使用中如有什么问题,欢迎交流。

阅读全文

一直以来蚊子就想解放自己,让想更新图片的人自己去刷新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当下已经成了很热门的玩意了,nginxcache大有替换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

阅读全文

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

阅读全文
squid 缓存文件的格式是DBase 3 data file,使用cat命令虽然也是可以看到里面的内容的,但格式混乱,如果想取出我们需要的东西,相对来说比较的麻烦,linux下有个stings命令,这条命令可以显示可打印的文本,这样,对cache文件进行stings的话,就可以把文本的部分显示出来了,而且每条记录是一行,这样一来,让我想到了以前我在张宴那个脚本基础上进行修改后的脚本就又可以进行第二次的改良了,下面我就把改良的内容写出如下
 
先看下原始cache文件的内容
再看看用stings转换后的内容

脚本文件名:clear_squid_cache.sh

注意:请赋予clear_squid_cache.sh可执行权限(命令:chmod +x ./clear_squid_cache.sh)。请确保脚本所在目录可写。

设置:
  squidcache_path= 表示squid缓存目录的路径
  squidclient_path= 表示squidclient程序所在的路径,默认为squid安装目录下的bin/squidclient
用法:
  1、清除所有Flash缓存(扩展名.swf):
  ./clear_squid_cache.sh swf

  2、清除URL中包含sina.com.cn的所有缓存:
  ./clear_squid_cache.sh sina.com.cn

  3、清除文件名为/images/的所有缓存:
  ./clear_squid_cache.sh /images/

如果对于频繁更新的gif或者什么,可以在crontab中添加对应的命令行
0 * * * * /usr/local/bin/clear_squid_cache.sh gif &
这样就会每隔一个小时进行一次刷新操作了,很是方便
如果需要让图片更新人员自行刷新的话,就可以找相应的人员开发web页面,进行对脚本的调用就可以了
 

注:以上cache内容摘取自squid3.0,2.x版本是否可以使用还请各位验证,总之3.0使用这个脚本后,准确率已经基本能达到100%了,对于以前有了很大程度的提高

原始脚本请参考张宴blog
阅读全文