Python中使用flask-cache进行缓存优化的前后对比

昨天贴: https://www.v2ex.com/t/383172#reply4

用了 flask-cache 之后,虽然 vps 的内存、cpu、硬盘 IO、网络 IO 骤降,但是也出现了问题:

1、登录之后网页状态不改变。想过登录和注销后清楚缓存,但是 blueprint 不支持上下文?(不是很懂,反正此路不同)

2、网页内容会出现问题

于是有放弃了 flask-cache。内存、cpu、硬盘 IO、网络 IO 继续飙升


继续想办法...

妈的,不应该啊,我的网站流量又不大,怎么网络 IO 几万 Kb 几万 KB 的走啊!!!

看看网络监控吧 于是安装了nethogs,一看居然有个 ip 长期占用!!!!! 你这是逆天啊!!!

一怒之下,将此 ip 访问直接导入百度

再看看内存、cpu、硬盘 IO、网络 IO:

终于又回归平静了!


结语:你妹!


Python中使用flask-cache进行缓存优化的前后对比

5 回复

有意思,不去看看那个 ip 在你的网站上都干了些啥?


Flask-Cache(现在通常用Flask-Caching)确实能显著提升性能,特别是在处理重复计算或数据库查询时。下面是一个完整示例,展示使用前后的区别。

未使用缓存的情况:

from flask import Flask
import time

app = Flask(__name__)

@app.route('/slow_query')
def slow_query():
    # 模拟耗时操作(如数据库查询)
    time.sleep(3)
    return 'Data after 3 seconds'

if __name__ == '__main__':
    app.run()

每次访问/slow_query都会等待3秒。

使用Flask-Caching优化后:

from flask import Flask
from flask_caching import Cache
import time

app = Flask(__name__)
app.config['CACHE_TYPE'] = 'simple'  # 使用内存缓存
cache = Cache(app)

@app.route('/cached_query')
@cache.cached(timeout=60)  # 缓存60秒
def cached_query():
    time.sleep(3)
    return 'Cached data - first load 3s, then instant'

if __name__ == '__main__':
    app.run()

首次访问/cached_query仍需3秒,但后续60秒内的请求会立即返回缓存结果。

关键对比:

  1. 响应时间:未缓存每次3秒,缓存后首次3秒,后续请求毫秒级响应
  2. 服务器负载:缓存减少重复计算和数据库查询
  3. 实现复杂度:只需添加装饰器和配置

实际效果:

  • 用户密集型页面加载速度提升明显
  • API接口在高并发下更稳定
  • 数据库压力显著降低

建议:对频繁访问且数据变化不频繁的接口使用缓存。

看到了 global ip…

#1 目测是爬虫

#2 ip 统计其他数据用的

回到顶部