2015-10-23 45 views
3

我需要在我的Django 1.8站點上實現緩存(顯然可以加速渲染)。計劃是使用Memcache,雖然這個問題不直接與它聯繫在一起。當且僅當用戶註銷時才使用Django的緩存?

現在,很多流量都轉到了一組保持不變的博客文章。但是,整個網站上有一個通用的動態頂欄,它可以從登錄用戶到登錄用戶有所不同,所以我需要一個緩存功能,當且僅當用戶是匿名的時候 - 例如如果用戶登錄,則完全繞過。

它看起來像Django的內置緩存並沒有真正區分登錄和註銷用戶,所以如果我使用它,會有不利影響記錄-在人們。

我可能必須使用較低級緩存API編寫自己的緩存修飾器/緩存函數,並將其附加到網站上所有已註銷的可訪問URL /視圖。雖然它不像似乎困難,這似乎是一個令人難以置信的共同特點。 Django中確實沒有做到這一點嗎?我擔心我可能錯過了一些東西,並正在重新實施。

謝謝!

回答

1

首先模板緩存超過額定值。首先使用django調試工具欄來確定您的django安裝模板渲染是否確實很慢。我敢打賭,這不是瓶頸。如果你發現它很慢。可以在每個用戶的基礎緩存如下:

{% cache 300 FULL_PAGE request.build_absolute_uri request.user %} 

cache template tag的第一個參數是超時,第二個是名稱其他唯一標識片段。

+0

感謝這個答案 - 我看到這可以在每個用戶的基礎上使用。 這種情況下的模板渲染不是瓶頸。什麼是瓶頸是因爲模板由多個數據庫調用填充(因爲實際內容存儲在elephantblog/feincms中)。因此,我甚至在進行這些調用之前需要在URL /控制器層緩存。 – mallyvai

+0

這也可以用於非授權用戶,因爲那麼用戶將對所有用戶都是匿名的。是的,在memcache中緩存全部或部分查詢可能會提供更好的速度提升 – e4c5