标题有点绕口。我尽量把关键词都贴进去。之前因为自己的nginx安装了ngx_lua模块,但是又需要引入


但是安装luafilesystem又需要先安装luarocks,比较繁琐。这里就想记录一下安装过程。



nginx安装ngx_lua模块可以参考:LNMP平滑升级nginx并安装ngx_lua模块教程



下面进入正题



下载:

wget http://keplerproject.github.io/luarocks/releases/luarocks-2.2.2.tar.gz

解压:
tar -zxvf luarocks-2.2.2.tar.gz 进入目录:
cd luarocks-2.2.2

安装 luarocks


./configure --with-lua="/usr/local" --lua-suffix="jit" --with-lua-include="/usr/local/include/luajit-2.0"

其中“/usr/local/include/luajit-2.0” 可以 find / -name lua.h 先找下路径

make build
make install  安装 luafilesystem luarocks install luafilesystem 因为自己网站526net一直放在国外,速度一直不怎么理想。所以网站前端一直是买一些低配廉价,但是对国内线路友好的机器来做反向代理。 nginx的反向代理可以说已经很好用了,我一直使用proxy_store方式来做缓存,唯一的缺点就是不会自动清理缓存。我是通过定时任务自动删除的。 但是还是做不到我要的效果,前两天使用lua写了脚本,实现客户访问前端,lua判断文件的创建时间,然后根据设定的时间来自动删除缓存。 nginx 的设置我就不多说了,lua的安装可以参考 《LNMP平滑升级nginx并安装ngx_lua模块教程》 《为nginx的luajit安装luarocks并安装luafilesystem》两篇文章 lua代码就很简单了。因为使用了luafilesystem来操作文件。 主要流程是。 用户访问前端完毕的时候,自动执行lua脚本,lua首先根据url来获取缓存文件路径,判断文件是否存在。如果存在获取文件的修改时间, 同时判断修改时间和缓存过期时间是否一致,一致的话删除缓存文件。下次用户访问会自动从源服务器抓回新的数据。 这个方式我测试了3天,没大问题。终于抛弃了定时整站删除的无奈了。 下面贴下主要代码: > 判断文件是否存在 很简单只需要 open一下就行了 function file_exists(path)
local file = io.open(path, "rb")
if file then file:close() end
return file ~= nil
end > 对时间的操作,计算过期时间。 local function getNewDate(srcDateTime,interval)
local ofset=
ofset = * interval
local newTime = os.date("*t", srcDateTime + tonumber(ofset))
return os.time(newTime)
end > 程序主体流程,代码是最初版的,我用的已经改造为数组循环判断 local getfile=ngx.var.document_root..ngx.var.uri local matchtime = local matchstr = if file_exists(getfile) then local lfs = require"lfs"
local new_att = assert (lfs.attributes(getfile))
local oldTime=new_att.change
if(string.match(ngx.var.uri,matchstr)) then
local newTime=getNewDate(oldTime,matchtime)
if os.time()>newTime then
os.remove(getfile)
end
end end

最新文章

  1. Android 判断一个 View 是否可见 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect)
  2. SQLServer清空日志
  3. (原创)Xilinx的ISE生成模块ngc网表文件
  4. AngularJS recursive(递归)
  5. 关于equals和hashCode
  6. golang的ssh例子
  7. keil逻辑分析仪的使用:
  8. 创业日记-关于学习Python
  9. jquery checkbox选中状态
  10. request.getParameter中文乱码问题
  11. BZOJ 1486: [HNOI2009]最小圈( 二分答案 + dfs判负圈 )
  12. JAVA中反射机制五(java.lang.reflect包)
  13. Code Kata:超级偶数数列 javascript实现
  14. 在MFC中UpdateData()的作用
  15. 如何修改build之后生成的文件结构和路径
  16. 基于maven的spring-boot的pom文件详解
  17. java设计模式概述
  18. 如何在C++中使用动态三维数组
  19. sklearn.preprocessing.LabelEncoder的使用
  20. linux中截取文件的特定字节(去掉utf-8 bom头)

热门文章

  1. 【离线】【递推】【multiset】 Codeforces Round #401 (Div. 2) C. Alyona and Spreadsheet
  2. 权限管理-RBAC
  3. 51单片机软件I2C驱动中的CY
  4. JQuery提示$(...).on is not a function解决方法
  5. C#测试程序运行时间
  6. 【PHP手册】 PHP debug_backtrace() 函数
  7. 学习web前端之神器sublime text 3
  8. 《新一代视频压缩码标准-H.264_AVC》读书笔记1
  9. jenkins报错 not a queue url
  10. GyoiThon:基于机器学习的渗透测试工具