2014-04-11 38 views
1

我明白Django的高速緩存功能到期指定的時間間隔已經過去之後(例如,1分,1小時等),但是我有一些內容每天的基礎上發生變化(例如,「每日消息」)。理想情況下,這將被緩存24小時,但如果我將超時設置爲24小時,則不能保證緩存將在午夜精確過期。處理這種情況的最佳做法是什麼?如何在特定的時間(例如午夜)清除Django模板緩存?

+0

我不認爲這是一個好主意,_BROWSER cache_動態頁面。你應該只緩存你的靜態文件,而不是整個頁面。 – xyres

回答

1

兩種簡單的方式映入腦海,既涉及計劃的任務,需要在(比方說)午夜運行。

1)獲得領先的遊戲:安排一些代碼運行(例如對於要求您在午夜內容「每日消息」,用24小時到期的自定義管理命令)。 (假設相關的緩存鍵並沒有被設定)

2)去核:在午夜

調度緩存中清除,或者兩者結合:

不要去核,只是安排調用只在午夜刪除MOTD密鑰(例如cache.delete('motd_key'),然後緩存新的密鑰)

或者,如果您使用Redis作爲緩存後端,則可以緩存MOTD,然後一個EXPIREAT調用設置緩存的MOTD進入在23:59:59到期。redis.py會讓你做一個Python化的方式。

如果您使用的Memcached作爲後端,你沒有得到控制的那個級別。

(如果你使用locmem://,你就錯了; O))

+0

這些是一些不錯的選擇(例如計劃任務或Redis)。我以前沒有聽說過Redis,並會檢查出來。謝謝! – Brad