Web页面缓存

2016/4/15 posted in  others

采用nginx+lua+redis进行页面缓存

1.配置nginx+lua+redis环境

安装lua解释器

wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz

配置lua Libinclude/luajit-$version目录为环境变量

下载ngx_devel_kitlua-nginx-module

https://codeload.github.com/simpl/ngx_devel_kit/tar.gz/v0.2.19
https://codeload.github.com/openresty/lua-nginx-module/tar.gz/v0.9.10

安装配置nginx

http://nginx.org/download/nginx-1.4.7.tar.gz(http://nginx.org/en/download.html

nginx configue时候,将ngx_devel_kitlua-nginx-module两个编入到nginx

make 和make install

使用redis

lua解析json格式的数据 http://www.kyne.com.au/~mark/software/lua-cjson.php(默认安装就行)

lua封装redis调用接口,https://github.com/openresty/lua-resty-redis,安装,(并且redis.lua上层目录要有resty,因为require “resty.redis”,看代码,负责会出现找不到库)

lua_package_path "/opt/vendor/lua/?.lua;;";//指定redis.lua路径,;;指定默认路径  加在http段里
 
init_by_lua_file /usr/local/nginx/html/init.lua;

lua_code_cache off;//避免lua代码缓存,更改代码执行失效  

location /lua {  
      content_by_lua_file /usr/local/nginx/html/content.lua;  
} 加在加入一个location

拦截请求保存相应的页面缓存

location ~ /(index\.html|(goods|event)/[0-9]+\.html|video/list\.html|channel/class\.html)? {
    content_by_lua_file /app/nginx/conf/content.lua;
}     

加在加入一个location,拦截相应的请求,保存页面到redis缓存

缓存的更新与删除

新增定时项目,定时循环页面缓存redis的Key值,根据key值访问相应接口,返回的结果值MD5之后保存到redis的不用区。

添加定时任务定时扫描保存MD5缓存的key,分页面进行操作,比较接口返回结果的MD5值和redis缓存是否一致,不一致删除相应的redis页面缓存,对于商品的特别处理,商品下市删除相应的redisMD5缓存和redis页面缓存。