nginx proxy cache 缓存 流程
来源:互联网 发布:mac mini macbook air 编辑:程序博客网 时间:2024/06/05 06:26
1.向客户端响应时,查询本地是否有缓存
ngx_http_upstream_init_request--->ngx_http_upstream_cache-->ngx_http_file_cache_open--->ngx_http_upstream_cache_send--->ngx_http_cache_send
可以参考http://blog.itpub.net/15480802/viewspace-1421409/
2.从上游获取到数据后,缓存到本地
主要是在ngx_event_pipe-->ngx_event_pipe_write_to_downstream这个函数中完成,如果判断是可缓存的,发送给客户端后,再调用ngx_write_chain_to_temp_file写入临时文件,当数据获取完整时,将临时文件重新命名为缓存文件,重命名操作在ngx_http_upstream_process_request调用ngx_http_file_cache_update中完成
3.程序启动load
主要处理函数是ngx_http_file_cache_loader,
4.cache 管理
主要处理函数是ngx_http_file_cache_manager
以上两个接口是在读配置时,ngx_http_file_cache_set_slot函数中初始化
nginx启动时,调用ngx_start_cache_manager_processes启动缓存相关的load和 manager进程,进程处理函数为ngx_cache_manager_process_cycle
ngx_cache_manager_ctx_t对应的结构分别为ngx_cache_manager_ctx、ngx_cache_loader_ctx,ngx_cache_manager_process_cycle中执行ev.handler = ctx->handler,就是将ngx_cache_manager_ctx-->ngx_cache_loader_process_handler、ngx_cache_loader_ctx--->ngx_cache_manager_process_handler分别赋值给事件handler,使用定时器来触发事件,下面是两个handler的代码
static voidngx_cache_manager_process_handler(ngx_event_t *ev){ time_t next, n; ngx_uint_t i; ngx_path_t **path; next = 60 * 60; path = ngx_cycle->pathes.elts; for (i = 0; i < ngx_cycle->pathes.nelts; i++) { if (path[i]->manager) { /*调用ngx_http_file_cache_manager*/ n = path[i]->manager(path[i]->data); next = (n <= next) ? n : next; ngx_time_update(); } } if (next == 0) { next = 1; } ngx_add_timer(ev, next * 1000);}
static voidngx_cache_loader_process_handler(ngx_event_t *ev){ ngx_uint_t i; ngx_path_t **path; ngx_cycle_t *cycle; cycle = (ngx_cycle_t *) ngx_cycle; path = cycle->pathes.elts; for (i = 0; i < cycle->pathes.nelts; i++) { if (ngx_terminate || ngx_quit) { break; } /*调用ngx_http_file_cache_loader*/ if (path[i]->loader) { path[i]->loader(path[i]->data); ngx_time_update(); } } exit(0);}
- nginx proxy cache 缓存 流程
- 利用Proxy Cache使Nginx对静态资源进行缓存
- Nginx Proxy Cache的slab page内存缓存机制
- 利用Proxy Cache使Nginx对静态资源进行缓存
- 利用Proxy Cache使Nginx对静态资源进行缓存
- nginx配置Proxy Cache缓存的12个指令
- Nginx Proxy Cache分析
- Nginx Proxy Cache分析
- Nginx Proxy Cache分析
- Nginx content cache Nginx内容缓存
- nginx 配置缓存 no-cache no-store
- FastDFS+Nginx+Cache架构图片缓存服务器
- nginx缓存cache的5种方案
- nginx缓存cache的几种方式
- nginx缓存cache的几种方式
- nginx缓存cache的5种方案
- nginx缓存cache的几种方式
- Nginx与浏览器 -- Cache-Control缓存
- UGUI能量图
- 野兽派游戏
- MathType6.7安装后word2007的功能区(工具栏)无显示
- centos7之lamp环境搭建
- Linux
- nginx proxy cache 缓存 流程
- jQuery选择器探究:Sizzle构造函数
- 反向迭代器(rbegin,rend)
- WebSocket 的性能与压力测试
- HDU1102 Constructing Roads
- JVM垃圾回收的二次标记
- JAVA练习-输出101到200之间的素数
- Redis学习(3.1)spring boot整合Redis速成
- poj1035 Spell checker