2016-02-28 5 views
2

我建立有在我心中一個網站,數百(!祝:千美元)的「得到」查詢-per day-將被緩存爲幾個月在文件系統中。Django的緩存:緩存數以千計的查詢時間長,對基本的服務器資源

閱讀the cache documentation,但是,我觀察到的默認值朝着小型,快速緩存週期傾斜。

old post描述了像我想象,一個戰略,他們的服務器失事破壞。

當然,the current django code似乎自2012年起已經演變然而緩存默認值仍然保持不變...

我不知道我是否在正確的軌道或不上。

我與熟悉的緩存中享受節省數千在相關目錄中的文件的不理解任何東西,但它的基本設置後W3 Total Cache結果受到限制。

有經驗的開發方法這一任務的「階段1」將如何:

沒有資金-yet-支持基於Redis的解決方案(例如)Not a valid argument

你將如何緩存通常增加的查詢數量 - 可以長時間形成批量 - 在相當基本的服務器資源上運行?

回答

1

Django的緩存後端*應該是執行無關。例如,如果您想從文件系統緩存或redis緩存或memcache開始,那麼對django應該沒什麼關係。

我能想到的幾個問題,你的方法:

  • 如何快速的數據集增長?如果你有相當穩定的大小的數據集,如果緩存條目的壽命很長,這無關緊要。
  • 你怎麼會作廢您的疑問?如果查詢被緩存數月,則表明數據不會改變;緩存失效是一件值得考慮的事情,客戶端不應該看到陳舊的數據。
  • 你在使用Filesystem緩存嗎?如果每個服務器緩存數據,請求是否被合理地分配給相同的服務器?如果不是,那麼多個服務器可以有重複的緩存,這是使用集中式緩存(redis/memcache)的好處之一
  • 您應該能夠根據您當前的數據集大小計算出相當好的估計值,想要緩存,以及您的數據增長速度需要多大的緩存。我覺得共享緩存將會走得很遠,並且可以在「基本服務器」資源上運行。

第1階段,我會:

  • 選擇一個共享緩存,無論是Redis的或memcached的,當你開始擴展到多服務器設置
  • 估計這個應該怎麼少了很多痛苦您需要緩存很多數據,以及您預測哪種數據量增長,以確保您的緩存具有適當的大小。
  • 我覺得緩存失效通常不是數據在緩存中保存多長時間的設置策略,它受數據更改時的控制,這應該強制使緩存失效,以便客戶端不會看到過時的數據
+0

我看到了大局。我會留下來享受'第0階段',嘗試獲得一些基準,然後在您的方法背景下考慮一個健全且基於良好的'階段1' - 根據需要。謝謝! – raratiru