您的位置:首页 > 运维架构 > Nginx

lua实现nginx proxy_store的purge缓存清理的方法

2013-11-22 11:05 609 查看
nginx缓存的方式有五种:
传统缓存(404)、传统缓存(!-e)、基于memcached的缓存、基于第三方插件ncache、nginx开发的proxy_cache功能。这里对于nginx的缓存方式不再做过多的介绍,恐怕对于图片缓存使用proxy_cache的方式是比较多的,原因则是其提供的purge缓存清理功能和图片的自动过期,虽然对比传统缓存方式有一定的优点,但是很多地方比如图片更新不频繁或者是cdn加速时还是有很多人比较倾向于使用传统缓存。

使用传统缓存时需要利用proxy_store的方式,将缓存文件拉取到本地永久保存。但是也随之遇到了缓存清理复杂的问题,不像proxy_cache的方式可以使用purge能方便的清理对应的缓存。其实笔者在学习nginx+lua的时候,发现lua的功能非常强大,可以执行系统的指令,比如:os.clock ()、os.date ([format [, time]])

、os.difftime(t2, t1)、os.execute ([command])、os.remove (filename)、os.time ()等命令,具体的可以参见:http://xenyinzen.wikidot.com/lua:oscall

虽然使用proxy_store的方式不能定义图片的自动过期时间,但是可以利用lua实现proxy_cache的purge的功能,这里笔者将自己实现的方法共享出来,希望有参考意义:

location /purge {

set $cache_home /opt/cache_home;

content_by_lua '

local file = string.match(ngx.var.uri,"^/purge /(%S+)")

path = ngx.var.cache_home

test = file

os.remove(path..test)

ngx.say(path..test)

';

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: