新闻资讯

小白推送:Nginx 反向代理缓存(二)

小白推送:Nginx 反向代理缓存(二).png


高速缓存参数

有些参数每个客户机都不相同并且参数的值不会影响返回结果,如果我们使用整个url作为key的缓存key的数目就会过多导致缓存命中率很低。

 

举例来说,用户手机imei惟一的,如果key中包含imei那么导致每个用户都有缓存,而这显然不是我们需要的。
所以可以某些参数key中排除掉吗?回答肯定的,请看下面的网络程序

 

    @ResponseBody
    @RequestMapping("/test/user.do")
    public Map<String, String> user(String imei, String sn, String phone, String name) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("imei", imei);
        map.put("sn", sn);
        map.put("phone", phone);
        map.put("name", name);
        return map;
    }


使用phone和name参数构造高速缓存密钥配置如下

location / {
proxy_store off;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://my-server/;

# 缓存使用前面定义的内存区域
proxy_cache web_cache;
# 对于 200 和 304 的响应码进行缓存,过期时间为 2 分钟,这会覆盖前面定义的 10 分钟过期时间
proxy_cache_valid 200 304 2m;
# 设置缓存的 key,只用 phone 和 name 构造 key
proxy_cache_key  $host$uri$is_args$arg_phone&$arg_name;
}

为了指定一些参数构造缓存密钥,关键是下面嵌套变量

$is_args

$arg_{名称}

文章部分内容来源于网络,联系侵删*

客户经理
2355860941 13063530893