nginx / squid

分布式缓存清除系统 v2.1发布[原创]

这两天观察了一下nginx的缓存文件,从而对server端程序代码进行了调整,调整不大。

在原有v2.0版本的基础上增加了对nginx的指定文件缓存的清除,提交请求的写法是一样的。

关于nginx支持purge的http头的方法请参考《web版清除缓存程序V1.2.3[原创] 》这篇文档的设置。这里我不在赘述

本篇文档主要讲解一下支持nginx指定内容缓存的原理,及nginx上关键的设置。

nginx反向代理缓存是本身就支持的,如果不做反向代理缓存,那就需要安装ngx_slowfs_cache模块,此模块本身已经包含了purge方法,如果是反向代理缓存,就需要安装独立的purge模块。安装方法,这里也不详细说明了,请网上自行查找。

下面就是nginx缓存配置部分的关键点:

对于proxy的缓存,关键配置是

proxy_cache_key    http://$host$uri$is_args$args;

对于slowfs_cache的缓存,关键配置是

slowfs_cache_key        http://$host$uri;

另外purge部分也需要调整,调整内容如下:

对于proxy的purge部分,关键配置是

proxy_cache_purge cache http://$host$1$is_args$args;

对于slowfs_cache的purge部分,关键配置是

slowfs_cache_purge  cache http://$host$1;

下面对这两个配置进行讲解:

proxy_cache_key和slowfs_cache_key是配置项

第二列中的

$host代表的访问的域名,也就是http1.1头中的HOST字段
$uri代表的是访问地址的URI部分,但不包含参数
$args代表的访问的参数

另外purge部分中第二列的cache,就是在proxy_cache里设置的名称,slowfs_cache_purge同理

举例说明:http://www.wenzizone.cn/wp-admin/edit-tags.php?taxonomy=post_tag,这个地址中$host->www.wenzizone.cn,$uri->wp-admin/edit-tags.php,$args->taxonomy=post_tag

因为缓存基本都是静态文件,所以$arg这个参数基本内容都是空的。只要保证上面的参数配置争取,缓存文件的内容的格式就基本确定了。server端就可以支持nginx的指定文件缓存清除了。

下面看下nginx的缓存文件内容:

# strings e562bd8b57c51764e4f5c4a363a61d2c

N$MdM
KEY: http://www.wenzizone.cn/wp-admin/images/media-button-video.gif
GIF89a
SVGm

可以看到 KEY:后面的就是我们需要的内容,而这部分内容的存放方式正好就符合http://$host$uri这种方式。

下载地址:http://code.google.com/p/purgesystem/

Related Post

8 Comments

  1. 哦,知道了,这个不要紧的,因为我那个脚本会遍历cache目录下的所有文件的内容,而你tmp目录下还存在其他非cache的文件,所以会报那个错误,可以忽略的。
    从上面你贴的看,相关文件已经被清除掉了。

  2. 显示strings: /tmp/.font-unix/fs7100: No such device or address,是什么原因,谢谢指教

  3. 对了,蚊子其purge页面,squid组为啥显示不出来?权限是对的!

Leave a Reply

Your email address will not be published. Required fields are marked *