美文网首页
Nginx POST 请求缓存的使用

Nginx POST 请求缓存的使用

作者: onmeiei | 来源:发表于2020-10-27 14:54 被阅读0次

背景

最近有个系统多中心上线,网络管理员监控到,微服务集群到公共数据库的跨中心网络流量飙到特别高。通过日志发现,存在大量的字典数据请求(每个用户1M的字典数据,各种字典……)。
由于字典数据的微服务没做缓存,直接把请求淦到数据库了,而微服务对公共数据库主库的访问是跨中心的,所以大量的重复的字典数据占用了宝贵的带宽(跨中心的带宽很有限,这个是基础设施规划的问题,一时半会解决不了的)。
箭已经射出去了,不可能现场改代码。所以在Nginx上临时做了proxy_cache来把脖子上的刀挪开。

操作

查看日志发现,获取字典数据的URL是POST请求,故需要做对POST请求进行缓存。

  1. 配置nginx.conf
http {
    proxy_cache_path dict_temp levels=1:2 keys_zone=dict_cache:1024m inactive=1h max_size=2g;
    # 其他配置
    # .......
}
location /dict {
    proxy_cache dict_cache;
    proxy_cache_valid 200 60s;
    proxy_cache_methods POST;
    proxy_cache_use_stale updating;
    proxy_cache_key "$request_uri|$request_body";
    proxy_ignore_headers Cache-Control Expires;

    # 其他配置
    # .........
}
  1. 热部署
sbin/nginx -s reload

效果

从300M跨中心带宽占用,降低到了10M跨中心带宽占用。

后话

最终,还需要把缓存的刷新放回到微服务应用层,最坏的情况,有大量的用户会看到60s的旧数据。

相关文章

  • Nginx POST 请求缓存的使用

    背景 最近有个系统多中心上线,网络管理员监控到,微服务集群到公共数据库的跨中心网络流量飙到特别高。通过日志发现,存...

  • Nginx代理POST请求配置

    Nginx代理POST请求的配置,同Nginx的反向代理配置原理基本相同。代理POST请求则需要针对特定的POST...

  • get请求和post请求的区别主要有两点

    get请求和post请求的区别主要有两点 get请求可以被缓存而post请求不能被缓存 get请求的传参方式和po...

  • iOS 网络缓存

    常见的网络数据缓存方式 GET网络请求缓存 概述 首先要知道,POST请求不能被缓存,只有 GET 请求能被缓存。...

  • nginx angular 跨域

    1-nginx.conf 2-angular中请求方法post请求 get请求

  • 4. iOS 缓存

    缓存的目的是以空间换时间。 POST请求不能被缓存,只有 GET 请求能被缓存。 只要是缓存,总会过期。 参考资料...

  • 03-发送请求-requests深入使用

    使用requests发送POST请求使用代理 使用requests发送POST请求 使用场景: 登录注册(POST...

  • curl相关操作

    GET请求 POST请求 POST请求,提交json格式数据 curl 的使用

  • 每日一点前端面试题

    Ajax请求的时候GET和POST的区别? GET大小限制,安全低,POST则相反; GET请求需考虑缓存问题,P...

  • axios POST传值

    GET请求: main.js:POST请求先全局配置后使用 POST请求:

网友评论

      本文标题:Nginx POST 请求缓存的使用

      本文链接:https://www.haomeiwen.com/subject/jtkxvktx.html