2012-01-16 92 views
2

我有使用Safari的django緩存登錄區域的問題。Django緩存 - 沒有爲頁面的某些部分緩存

當我使用memcache並啓用'django.middleware.cache.FetchFromCacheMiddleware'時,頁面的登錄部分總是被緩存,即使在按下注銷後也顯示「歡迎用戶名」。

單擊註銷後應該變回「登錄/註冊」鏈接。這似乎只發生在safari中。有沒有辦法不緩存HTML頁面的一部分?我在查看函數時使用了@never_cache,但是這個登錄信息是base.html的一部分,它在其他站點模板htmls中得到擴展。

謝謝。

代碼

在base.html文件

{% if user.is_authenticated %} 
     <div class="login"> 
     <a id="login_dropdown_link" title="Login_nav">Welcome {{ user.username }} (<span id="total_count"> {% total_count %}</span>)</a> 
     </div> 
{% else %} 
     <div class="login"> 
     <span class="spaced"><a href="/accounts/login" id="login-link" class="red">Log In | Sign Up</a></span> 
     </div> 
{% endif %} 
+0

@never_cache用於查看功能,我不明白「視圖依賴HTML」是什麼意思。 Django具有模板片段緩存,但這聽起來像是HTTP緩存指令的問題。 HTTP級緩存發生在每個請求的粒度上 - 沒有辦法說「不要緩存這個請求的一部分」,只能「緩存這個請求」或「不緩存這個請求」。 – AdamKG 2012-01-16 18:42:43

+0

同意@AdamKG。首先要做的是重新檢查包含登錄信息的基本模板 - 是否在那裏緩存?然後確認視圖*的其餘部分不會被緩存,比如只需添加顯示請求當前日期和時間的「{%now」r「%}'即可。您可能還想將其添加到基本模板的登錄部分! – 2012-01-16 18:53:34

+0

Adam,我將「視圖依賴HTML」改爲「查看功能」。我正是這個意思。 – DavidL 2012-01-16 19:01:56

回答

0

這很可能是由於到Safari瀏覽器被指示緩存的頁面進行了一定的時間的報頭的問題。