3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
8 #ifndef _NGX_HTTP_CACHE_H_INCLUDED_
9 #define _NGX_HTTP_CACHE_H_INCLUDED_
12 #include <ngx_config.h>
17 #define NGX_HTTP_CACHE_MISS 1
18 #define NGX_HTTP_CACHE_BYPASS 2
19 #define NGX_HTTP_CACHE_EXPIRED 3
20 #define NGX_HTTP_CACHE_STALE 4
21 #define NGX_HTTP_CACHE_UPDATING 5
22 #define NGX_HTTP_CACHE_HIT 6
23 #define NGX_HTTP_CACHE_SCARCE 7
25 #define NGX_HTTP_CACHE_KEY_LEN 16
31 } ngx_http_cache_valid_t
;
35 ngx_rbtree_node_t node
;
38 u_char key
[NGX_HTTP_CACHE_KEY_LEN
39 - sizeof(ngx_rbtree_key_t
)];
43 unsigned valid_msec
:10;
55 } ngx_http_file_cache_node_t
;
58 struct ngx_http_cache_s
{
62 u_char key
[NGX_HTTP_CACHE_KEY_LEN
];
76 ngx_uint_t valid_msec
;
80 ngx_http_file_cache_t
*file_cache
;
81 ngx_http_file_cache_node_t
*node
;
83 ngx_msec_t lock_timeout
;
86 ngx_event_t wait_event
;
100 time_t last_modified
;
104 u_short header_start
;
106 } ngx_http_file_cache_header_t
;
111 ngx_rbtree_node_t sentinel
;
114 ngx_atomic_t loading
;
116 } ngx_http_file_cache_sh_t
;
119 struct ngx_http_file_cache_s
{
120 ngx_http_file_cache_sh_t
*sh
;
121 ngx_slab_pool_t
*shpool
;
131 ngx_uint_t loader_files
;
133 ngx_msec_t loader_sleep
;
134 ngx_msec_t loader_threshold
;
136 ngx_shm_zone_t
*shm_zone
;
140 ngx_int_t
ngx_http_file_cache_new(ngx_http_request_t
*r
);
141 ngx_int_t
ngx_http_file_cache_create(ngx_http_request_t
*r
);
142 void ngx_http_file_cache_create_key(ngx_http_request_t
*r
);
143 ngx_int_t
ngx_http_file_cache_open(ngx_http_request_t
*r
);
144 void ngx_http_file_cache_set_header(ngx_http_request_t
*r
, u_char
*buf
);
145 void ngx_http_file_cache_update(ngx_http_request_t
*r
, ngx_temp_file_t
*tf
);
146 ngx_int_t
ngx_http_cache_send(ngx_http_request_t
*);
147 void ngx_http_file_cache_free(ngx_http_cache_t
*c
, ngx_temp_file_t
*tf
);
148 time_t ngx_http_file_cache_valid(ngx_array_t
*cache_valid
, ngx_uint_t status
);
150 char *ngx_http_file_cache_set_slot(ngx_conf_t
*cf
, ngx_command_t
*cmd
,
152 char *ngx_http_file_cache_valid_set_slot(ngx_conf_t
*cf
, ngx_command_t
*cmd
,
156 extern ngx_str_t ngx_http_cache_status
[];
159 #endif /* _NGX_HTTP_CACHE_H_INCLUDED_ */