2012-12-10 3 views
0

내 장고 프로젝트에서 캐싱에 memcached를 사용하고 있습니다에 캐시되는 요청 객체를 방지하고 나는이어떻게 장고

def questions(request): 
    # code to fetch all questions 

기능 등의 전망이이 질문의 목록만을 리턴 그러나 결과를 렌더링하는 페이지에는 request.user 이름이 표시된 머리글이 있습니다.

@cache_page 데코레이터를 직접 사용하면 요청 개체도 캐시에 저장되고 해당 페이지의 request.user도 캐시에서 가져옵니다. 그 결과 나는 질문 페이지로 갈 때 다른 사람의 이름을보고 있습니다.

데코레이터를 사용하여 요청 객체가 캐시되지 않도록 할 수있는 방법이 있습니까? 한 가지 방법은 낮은 수준의 API를 사용하여 캐시하려는 쿼리 세트를 캐시하는 것이지만 요청 오브젝트와 관련된 것을 캐시하지 않는 데코레이터를 작성할 수 있습니까?

제 질문에 대한 답변을 드리겠습니다. 모든 사용자에 대해 동일한

답변

3

에 대한 당신 페이지 템플릿을 수정할 것을 생각한다, 그래서 당신은 사용자

{% load cache %} 
{% cache 500 sidebar request.user.username %} 
    .. sidebar for logged in user .. 
{% endcache %} 

다른 블록을 기반으로 한 블록을 캐시 할 수 있었다 것은

{% cache 500 questions %} 
    .. questions list .. 
{% endcache %} 

Django Template fragment caching docs

에서보세요
+0

예 가능한 해결책이지만 많은 템플릿을 변경한다는 의미이며 사용자가 질문 목록 자체에 뭔가를 표시해야하는 경우 어떻게해야합니까? 그래서 나는 그것을 실제로 캐싱 할 수 없다. 그래서 요청 객체를 캐시에 넣지 않고 좀 더 일반적인 솔루션을 찾고있었습니다. – Sachin

+0

좋은 해결책이 될 수 있습니다 - 캐시를 전혀 사용하지 않습니까? – inoks

+0

예,이 시점에서 가능한 유일한 방법 인 것 같습니다. – Sachin