ngx_str_t是nginx自定義的字符串格式,其定義在ngx_string.h中,如下:
typedef struct {
size_t len; //字符串長度,不含'\0'
u_char *data; //真正字符串
} ngx_str_t;
它本質上就是一個結構體,nginx中廣泛使用這種格式字符串。
優點:減少對字符串長度的計算次數,nginx作爲web服務器大量的會計算字符的長度;可以隨時被引用,減少字符串拷貝帶來的性能損失。
對這種字符串的操作,nginx也提供了一系列的操作函數,定義在nginx_string.[c|h]中:
#define ngx_string(str) { sizeof(str) - 1, (u_char *) str }
將它一個普通字符串轉換成一個nginx字符串格式,如
ngx_str_t name = ngx_string(“http”); // 注意name是結構體,而不是指針,宏預處理後等價於
ngx_str_t name = {sizeof(“http”)-1, (u_char*)”http”};