2009-07-16 81 views
1

我有一個用Django編寫的博客,我開始使用帶有文件系統緩存後端的基本Django緩存中間件。不幸的是,這導致了兩件事情被緩存,本應該不是這樣的:登錄用戶的管理鏈接(例如「編輯此帖子」)以及基於cookie的預填充評論表單。Django緩存博客

要解決這個問題,我開始使用模板緩存標記:

{% load cache %} 

...admin links... 
{% cache 500 blog_entry entry.id %} 
...entry... 
{% endcache %} 
...comment form... 

但它似乎是整個頁面仍然得到緩存爲好。如何將緩存系統設置爲只有緩存您明確設置的模板部分?

編輯:對於評論,如果有人對博客發表評論,我將他們的姓名,網站和電子郵件地址存儲在會話變量中。如果他們回到網站,那麼我會用這些數據預先填寫表單的這些部分。但這意味着緩存系統有可能使用預先填充的數據來緩存視圖,這是不好的。

回答

5

添加到您的settings.py:

CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True 

這應該可以解決與管理環節的問題,我不太明白你的第二個問題(預填充評論)是什麼?

+0

這工作,很簡單。 複雜的解決方案將緩慢移動緩存(緩存數據,而不是渲染頁面)。雖然不是最好的解決方案。 iBegin或Curse.com提到總是使用通用數據渲染緩存頁面,然後使用Javascript插入已登錄的特權用戶內容(管理鏈接,Hello用戶名等)。這是更復雜的,但真正利用緩存的渲染內容最好。 – joej 2009-07-16 15:30:43

7

現在您需要刪除緩存中間件,因爲您正在緩存模板片段而不是整個頁面。