如何在Django中实现每请求的内存“缓存”值

1 投票
1 回答
2734 浏览
提问于 2025-04-17 18:49

我想在请求和响应的过程中存储一个不会改变的值,但这个值会被使用成百上千次。

比如:

#somefile.py

def get_current_foo(request): # this gets called a lot and is currently a bottleneck
  foo = get_foo_from_db(request.blah)
  return foo

现在我用memcached来存这个值,但因为这个值被调用的次数太多,即使使用memcached也成了一个瓶颈(我正在分析这个问题)。有没有办法在当前的请求和响应过程中把这个值“缓存”在内存里呢?

( 这是关于 Python的“全局”(模块)变量是否是线程本地的? 的后续问题 )

1 个回答

4

如果是每次请求的数据,就把它存储在请求对象上。:-)

可以参考 Django中的每次请求缓存,里面有一些方法可以实现这个功能。

撰写回答