ngx_http_file_cache_name(r,path)-Nginx源码分析
www-fo-a-sp.cn
下面对nginx源码的一个函数ngx_http_file_cache_name(r,path)进行分析,所在ngx_http_file_cache.c文件
调用是在192行,传递参数 一个是request请求结构,一个是cache的路径(这里是配置文件的文件夹)
/*定义file cache*/
static ngx_int_t
ngx_http_file_cache_name(ngx_http_request_t *r, ngx_path_t *path)
{
u_char *p;
ngx_http_cache_t *c;
c = r->cache;/*给http_cache中保存文件名字长度赋值 cache路径 斜杠 +level 的长度 16char *2 十六进制标志*/
c->file.name.len = path->name.len + 1 + path->len + 2 * NGX_HTTP_CACHE_KEY_LEN;
// 给http_cache文件名分配内存
c->file.name.data = ngx_pnalloc(r->pool, c->file.name.len + 1);
// 如果分配内存失败
if (c->file.name.data == NULL) {
return NGX_ERROR;
}
// 给http_cache文件路径赋值
ngx_memcpy(c->file.name.data, path->name.data, path->name.len);
//给字符串后面加上\0,结束符
p = c->file.name.data + path->name.len + 1 + path->len;
p = ngx_hex_dump(p, c->key, NGX_HTTP_CACHE_KEY_LEN);
*p = '\0';
//通过从配置文件中的path,得到完整路径,ngx_create_hashed_filename是填充level路径
ngx_create_hashed_filename(path, c->file.name.data, c->file.name.len);
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"cache file: \"%s\"", c->file.name.data);
return NGX_OK;
}
ngx_create_hashed_filename 是通过level设置对应的文件夹路径,是根据md5值过来的后面的位数定义的文件夹。
原文章%77w%77%2Ef%6F%72%61%73%70%2E%63n