2016-07-15 74 views
1

我有一個Django Web應用程序,它當前正在運行並收到很多查詢。我正在尋找方法來優化其性能,並且可以改進的一個方面是它如何與其數據庫進行交互。在Django中緩存一個靜態數據庫表

在其當前狀態下,對特定視圖的每個請求都會將整個數據庫表加載到完成查詢的熊貓數據框中。該表由超過55,000行的文本數據組成(主要是協調)。

爲了避免不必要的查詢,我建議將數據庫緩存到內存中並在第一次加載時緩存它。這將消除一些數據庫方面的開銷。我之前從未使用Django的這個功能,所以我有點迷路。

Django manual似乎沒有我想要做的具體實現。將整個表存儲在內存中還是將其存儲在文件中是一個更好的主意?

+0

我預測這個問題會被標記爲過於寬泛,但我可以建議你先從https://github.com/Suor/django-cacheops開始,然後再進一步google,當你將關注的是你究竟想要的是什麼 – valignatev

+0

你也可以嘗試[django cachalot](https://github.com/BertrandBordage/django-cachalot)。設置起來非常簡單,它完全符合您的需求:將查詢保存在內存中的第一個請求中,稍後從中獲取。 – mislavcimpersak

回答

1

我有一個類似的問題,django-cache-machine像一個魅力工作。它使用Django緩存功能來緩存查詢結果。這是很容易設置(假設你已經配置Django的緩存後端):

pip install django-cache-machine 

然後在模型中要緩存:

from caching.base import CachingManager, CachingMixin 

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

就是這樣,你的查詢將被緩存。