3 * Copyright (C) Igor Sysoev
7 #ifndef _NGX_HTTP_CACHE_H_INCLUDED_
8 #define _NGX_HTTP_CACHE_H_INCLUDED_
11 #include <ngx_config.h>
16 #define NGX_HTTP_CACHE_MISS 1
17 #define NGX_HTTP_CACHE_EXPIRED 2
18 #define NGX_HTTP_CACHE_STALE 3
19 #define NGX_HTTP_CACHE_UPDATING 4
20 #define NGX_HTTP_CACHE_HIT 5
22 #define NGX_HTTP_CACHE_KEY_LEN 16
28 } ngx_http_cache_valid_t
;
32 ngx_rbtree_node_t node
;
35 u_char key
[NGX_HTTP_CACHE_KEY_LEN
36 - sizeof(ngx_rbtree_key_t
)];
40 unsigned valid_msec
:10;
51 } ngx_http_file_cache_node_t
;
54 struct ngx_http_cache_s
{
58 u_char key
[NGX_HTTP_CACHE_KEY_LEN
];
71 ngx_uint_t valid_msec
;
75 ngx_http_file_cache_t
*file_cache
;
76 ngx_http_file_cache_node_t
*node
;
92 } ngx_http_file_cache_header_t
;
97 ngx_rbtree_node_t sentinel
;
100 ngx_atomic_t loading
;
102 } ngx_http_file_cache_sh_t
;
105 struct ngx_http_file_cache_s
{
106 ngx_http_file_cache_sh_t
*sh
;
107 ngx_slab_pool_t
*shpool
;
119 ngx_shm_zone_t
*shm_zone
;
123 void ngx_http_file_cache_create_key(ngx_http_request_t
*r
);
124 ngx_int_t
ngx_http_file_cache_open(ngx_http_request_t
*r
);
125 void ngx_http_file_cache_set_header(ngx_http_request_t
*r
, u_char
*buf
);
126 void ngx_http_file_cache_update(ngx_http_request_t
*r
, ngx_temp_file_t
*tf
);
127 ngx_int_t
ngx_http_cache_send(ngx_http_request_t
*);
128 void ngx_http_file_cache_free(ngx_http_request_t
*r
, ngx_temp_file_t
*tf
);
129 time_t ngx_http_file_cache_valid(ngx_array_t
*cache_valid
, ngx_uint_t status
);
131 char *ngx_http_file_cache_set_slot(ngx_conf_t
*cf
, ngx_command_t
*cmd
,
133 char *ngx_http_file_cache_valid_set_slot(ngx_conf_t
*cf
, ngx_command_t
*cmd
,
136 extern ngx_str_t ngx_http_cache_status
[];
139 #endif /* _NGX_HTTP_CACHE_H_INCLUDED_ */