常见的开发人员控制的缓存分类
数据库缓存
应用程序缓存
Nginx网关缓存
前端缓存
image-20200821141005199
让后端结果缓存离用户更进一步
/root/cache
本地路径,用来设置Nginx缓存资源的存放地址
levels=1:2
默认所有缓存文件都放在上面指定的根路径中,可能影响缓存的性能,推荐指定为 2 级目录来存储缓存文件;1和2表示用1位和2位16进制来命名目录名称。第一级目录用1位16进制命名,如a;第二级目录用2位16进制命名,如3a。所以此例中一级目录有16个,二级目录有16*16=256个,总目录数为16 * 256=4096个。
当levels=1:1:1时,表示是三级目录,且每级目录数均为16个
key_zone
在共享内存中定义一块存储区域来存放缓存的 key 和 metadata
max_size
最大 缓存空间, 如果不指定会使用掉所有磁盘空间。当达到 disk 上限后,会删除最少使用的 cache
inactive
某个缓存在inactive指定的时间内如果不访问,将会从缓存中删除
proxy_cache_valid
配置nginx cache中的缓存文件的缓存时间,proxy_cache_valid 200 304 2m 对于状态为200和304的缓存文件的缓存时间是2分钟
use_temp_path
建议为 off,则 nginx 会将缓存文件直接写入指定的 cache 文件中
proxy_cache
启用proxy cache,并指定key_zone,如果proxy_cache off表示关闭掉缓存
add_header Nging-Cache “$upstream_cache_status”
用于前端判断是否是缓存,miss、hit、expired(缓存过期)、updating(更新,使用旧的应答)
proxy_cache_path /root/cache levels=1:2 keys_zone=xd_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
location /{
…
proxy_cache xd_cache;
proxy_cache_valid 200 304 10m;
proxy_cache_valid 404 1m;
proxy_cache_key hosthosthosturiisargsis_argsisargsargs;
add_header Nginx-Cache “$upstream_cache_status”;
}
}
配置实操
请求后端json接口,通过控制台日志判断是否有到后端服务
注意:
nginx缓存过期影响的优先级进行排序为:inactvie > 源服务器端Expires/max-age > proxy_cache_valid
如果出现 Permission denied 修改nginx.conf,将第一行修改为 user root
默认情况下GET请求及HEAD请求会被缓存,而POST请求不会被缓存,并非全部都要缓存,可以过滤部分路径不用缓存
缓存清空
直接rm删除
ngx_cache_purge
缓存命中率统计
前端打点日志上报
nginx日志模板增加信息
$upstream_cache_status