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


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 ([table])等命令,具体的可以参见: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)

';

}

你可能感兴趣的:(lua实现nginx proxy_store的purge缓存清理的方法)