我已经设置了一条指令来缓存到 nginx 中的 memdisk:
fastcgi_cache_path /dev/shm/nginx levels=1:2 keys_zone=WPCACHE:2048m inactive=480m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
server {
#snip other locations...
# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php;
fastcgi_cache WPCACHE;
fastcgi_cache_valid 200 480m;
add_header X-Cache $upstream_cache_status;
fastcgi_cache_methods GET HEAD;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
#more_clear_headers Server; more_clear_headers "Pragma";
add_header Z_LOCATION "PHP MAIN"; add_header URI $uri; # DEBUG
}
}
我明白这应该将缓存大小限制为 2GB,持续 480 分钟,但是现在它已经达到了 2.8GB,超过了这个限制 - 请问我做错了什么吗?
root@www1:/dev/shm/nginx# du -sch *
182M 0
183M 1
177M 2
174M 3
177M 4
172M 5
172M 6
167M 7
174M 8
172M 9
168M a
171M b
174M c
177M d
172M e
179M f
2.8G total
答案1
keys_zone
该指令的参数指定fastcgi_cache_path
了用于存储缓存键的内存区域。其大小间接限制了缓存可以存储的项目数(1 兆字节 ~ 8k 个项目),但没有限制缓存的磁盘大小。
要限制磁盘大小,请使用以下max_size
参数:
fastcgi_cache_path ... max_size=2048m;
看fastcgi_cache_path 文档更多细节。