在Django中缓存静态数据库表

时间:2016-07-15 10:34:20

标签: python django caching

我有一个Django Web应用程序,目前正在运行并收到大量查询。我正在寻找优化其性能的方法,可以改进的一个方面是它与数据库的交互方式。

在当前状态下,对特定视图的每个请求都会将整个数据库表加载到pandas数据框中,并根据该数据框进行查询。该表包含超过55,000行文本数据(主要是坐标)。

为避免不必要的查询,我建议将数据库缓存到内存中,并在第一次加载时对其进行缓存。这将消除数据库方面的一些开销。我之前从未使用过Django的这个功能,所以我有点失落。

Django manual似乎没有具体实现我想做的事情。将整个表存储在内存中还是将其存储在文件中是一个更好的主意,这是一个好主意吗?

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,django-cache-machine就像一个魅力。它使用Django缓存功能来缓存查询结果。它很容易设置(假设你已经配置了Django的缓存后端):

pip install django-cache-machine

然后在您要缓存的模型中:

from caching.base import CachingManager, CachingMixin

class MyModel(CachingMixin, models.Model):
    objects = CachingManager()

就是这样,您的查询将被缓存。