2015-04-01 54 views
0

我有一個向用戶提供問題列表的網站。這組問題對所有用戶都是一樣的。我有這些問題存儲在一個文本文件中。該文件的內容在服務器運行時不會改變。如何在Django中緩存一小段信息

我不能使用靜態頁面來顯示這些問題,因爲我有一些邏輯來決定何時顯示哪個問題。

我想將這些問題緩存在內存中(而不是每次用戶連接時從硬盤中讀取文件)。我正在使用Django 1.7。

我沒有讀過Django網站的緩存,我認爲建議的方法(如memcached和數據庫)對於我的需要來說太重了。對我的情況來說,什麼是一個好的解決方案?使用全局變量?

謝謝!

+0

也許你可以創建一個RAM盤,並保存就可以http://www.jamescoyle.net/how-to/943-create-a-ram-disk-in-linux – Pynchia 2015-04-01 12:56:35

+0

不太緩存文件,但你可以使用上下文處理器。或者,如果您使用的是基於類的視圖,則可以擴展get_context_data以在響應上下文中定義問題。 – devinformatics 2015-04-01 13:02:08

+0

我無法找到一個原因緩存將是沉重的您的需要,如果您需要緩存,使用緩存引擎,加載初始數據,將其分配給緩存與一個密鑰,可以很容易地跟蹤,如果數據有改變(也許是所有值的散列),然後如果數據改變,重新加載並重新生成緩存。如果不是,那麼在模型中的某個地方聲明問題並直接將它們用作變量(但是我會避免這麼做,因爲它會在覈心中引入相關性) – petkostas 2015-04-01 16:04:42

回答

0

有這麼多的緩存後端,您可以使用作爲https://docs.djangoproject.com/en/1.7/topics/cache/

上市我沒有嘗試過的文件系統或本地內存緩存我自己,我總是需要的memcached,但看起來他們是可用的,剩下的就是小菜一碟!

from django.core import cache 

cache_key = 'questions' 
questions = cache.cache.get(cache_key) # to get 
if questions: 
    # use questions you fetched from cache 
else: 
    questions = { 'question1': 'How are you?'} #Something serializable that has your questions 
    cache.cache.set(cache_key, questions)