2012-01-16 1 views
2

Safari를 사용하여 로그인 영역에 장고 캐싱에 문제가 있습니다.장고 캐싱 - 페이지의 특정 부분에 대해 캐싱하지 않음

memcache를 사용하고 'django.middleware.cache.FetchFromCacheMiddleware'를 설정하면 로그 아웃을 누른 후에도 페이지의 로그인 부분이 항상 캐시되어 '환영 사용자 이름'을 표시합니다.

로그 아웃을 클릭하면 다시 "로그인/가입"링크로 변경됩니다. 이것은 사파리에서만 일어나는 것 같습니다. HTML 페이지의 일부를 캐시하지 않는 방법이 있습니까? 뷰 기능에 대해서는 @never_cache를 사용했지만이 로그인 정보는 다른 사이트 템플리트 html을 통해 확장되는 base.html의 일부입니다.

감사합니다. 때문에 사파리는 일정 시간 동안 페이지를 캐시하도록 지시하고있는 헤더 문제에 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"이 무슨 의미인지 이해하지 못합니다. 장고에는 템플릿 조각 캐싱이 있지만 HTTP 캐시 지시문에 문제가있는 것처럼 들립니다. HTTP 수준 캐싱은 요청 별 세분성 (granularity)에서 발생합니다. "이 요청의 일부 * 캐시하지 말 것", "이 요청을 캐시하십시오"또는 "이 요청을 캐시하지 마십시오"라고 말할 수있는 방법은 없습니다. – AdamKG

+0

@AdamKG와 동의하십시오. 가장 먼저해야 할 일은 로그인 정보가 들어있는 기본 템플릿을 다시 검토하는 것입니다.이 템플릿은 여기에 캐시되어 있습니까? 그런 다음 나머지보기 *가 캐시되지 않았는지 확인하십시오. 요청의 현재 날짜와 시간을 보여줄'{% now "r"%} "를 추가하면됩니다. 이 템플릿을 기본 템플릿의 로그인 섹션에도 추가 할 수 있습니다! –

+0

Adam, "보기 종속 HTML"을 "보기 기능"으로 변경했습니다. 그것이 내가 의미했던 것입니다. – DavidL

답변

0

이 가장 가능성이 높습니다에서

코드

.

관련 문제