nginx缓存
2021-06-26 本文已影响0人
麟之趾a
缓存
what
缓存是对热点数据进行的。是把数据从低端的硬盘存储,放到高端的内存存储。但有一个前提,就是数据必须有时空性。时间,及客户端第一次访问,和以后几次访问都访问相同的数据。空间性,及访问的这次数据,以后的几次可以访问其周边数据。及100%的数据,有20%是经常被访问的。20%及为热点数据
why
缓存相当于中间层,是为了衔接,cpu和硬盘速度不匹配。而加入的,为了提升响应客户端的速度
where
如页面缓存(page cache),nginx所做的。缓存css,js,jpg,png...图片的
who
如高并发场景,缓存数据,做用户登录的session
how
page cache: nginx varish spuid CDN
data cache: redis memcache
- 缓存内容如何定义
- 缓存内容的过期时间
- 在http请求中,哪些方法可以被缓存
- 缓存放在哪(内存)
- 根据什么方法,来查找缓存(hash算法)
nginx缓存
定义缓存
Syntax: proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
Default: —
Context: http
path: 缓存路径,nginx缓存的key是放在内存中,具体文件放在磁盘中。此路径需要创建
levels: 缓存的级别
例:1:2:1 为三级路由, 1为hash算法的第一个匹配uri的从右往左的第一个字母
2: 为hash算法匹配uri的从右往走的第二,三个字母
1: 为hash算法匹配uri名字的从右往左的第四字母
注意: uri全为16进制重新转义,为hash算法匹配
keys_zone 为nginx key值的内容建立内存空间,后面指定用多少。后面proxy_cache调用
这个名字
使用缓存
Syntax: proxy_cache zone | off;
Default:
proxy_cache off;
Context: http, server, location
指定缓存的名字,名字为上面proxy_path定义的keys_zone的名字
缓存的额外配置
- proxy_cache_key 使用请求过来的什么当索引
- proxy_cache_methon 那种http方法被缓存
- proxy_cache_vaild 哪种状态码被缓存,及缓存多长时间
- proxy_cache_use_stable 如果代理后端服务不可用,缓存将采取什么样的策略。是继续返回缓存数据,还是返回错误
proxy_cache_purge
Syntax: proxy_cache_purge string ...;
Default: —
Context: http, server, location
This directive appeared in version 1.5.7.
清理nginx缓存
example
proxy_cache_path /data/nginx/cache keys_zone=cache_zone:10m;
map $request_method $purge_method {
PURGE 1;
default 0;
}
server {
...
location / {
proxy_pass http://backend;
proxy_cache cache_zone;
proxy_cache_key $uri;
proxy_cache_purge $purge_method;
}
}
自定义请求方法,以此方法请求,即可清空缓存
做为运维工程师,应该清楚,每次版本更新。有哪些缓存需被清楚,替换。清楚替换内容找研发要