2013-07-11 1 views
2

웹 응용 프로그램에 간단한 캐싱을 추가했으며 새 개체를 삭제하거나 추가하면 설정 한 시간 (2 분) 후에 캐시가 새로 고쳐지지 않습니다.장고 캐시가 새로 고침되지 않습니다.

얼어 붙은 것 같습니다. 내 애플리케이션을 다시 시작하면 새로 고침됩니다.

나는 memached와 locmemcache에서 사용해 보았습니다.

INDEX_LIST_CACHE_KEY = "index_list_cache_key" 

class IndexView(BaseView): 
    queryset = Advert.objects.all().select_related('category', 'location')[:25] 
    template_name = "adverts/category_view.html" 

    def get_queryset(self): 
     queryset = cache.get(INDEX_LIST_CACHE_KEY) 
     if queryset is None: 
      queryset = self.queryset 
      cache.set(INDEX_LIST_CACHE_KEY, queryset, 2 * 60) 
     return queryset 

왜이 프로젝트에서 캐싱이 작동합니까?

편집 - settings.py : locmemcache

CACHES = { 
    'default': { 
     'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 
     'LOCATION': 'oglos-cache' 
    } 
} 

에 대한

memcached를

CACHES = { 
    'default': { 
     'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 
     'LOCATION': '127.0.0.1:11211', 
    } 
} 
+0

'settings.py'의 캐시 관련 설정을 표시 할 수 있습니까? – alecxe

답변

4

에 대한 때문에 클래스 정의에서의 검색어를 얇게함으로써, 당신은 다음과 거기를 평가했습니다 - 클래스 정의 시간, 즉 서버가 시작될 때. 따라서 캐시는 새로 고쳐 지지만 이전 항목 세트 만 사용해야합니다. 클래스 수준에서 슬라이스를 수행하지 마십시오. get_queryset의 결과를 반환 할 때 수행하십시오.

+0

이 멋진 답변 주셔서 감사합니다! :) 나는 결코 그것을 발견하지 못했을 것입니다. 아니면 아마도 나이를 먹을 것입니다. – Efrin

관련 문제