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)

';

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章