2013-04-07 1 views
1

내가 관리하는 서버에서 memcached를 사용하도록 설정했습니다. 우리는 1,000 레코드 이상을 보여주는 몇 페이지를 가지고 있습니다 (이것이 필요합니다). memcached를 사용하면 거의 즉시로드됩니다. 그러나 해당 페이지로 이동해도 여전히 1,000 개의 레코드가 모두 표시되지만 해당 페이지에는 0 개의 레코드가 포함되어야하는 경우가 있습니다. 반대로, 때로는 1,000 개의 레코드가 표시되어야하지만, 페이지가 0 레코드를 표시하는 데 사용되었으므로 페이지가 메모리에서로드되어 결과적으로 레코드가 표시되지 않습니다.Django - Memcached issues

저는 어떻게 처리해야하는지 궁금합니다. 기본적으로 캐시 된 페이지를로드하는 것뿐만 아니라 요청이 실제로 다른 데이터 세트에 대한 것인지를 Memcache 시스템에 알리는 방법. 미들웨어에서 더 아래 다음

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

과 :

여기 내 settings.py 파일 (관련 라인)의

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.cache.FetchFromCacheMiddleware', 
) 

어떤 생각? 내가 잘못하고 있니?

고마워요.

답변

0

Django Docs의 개발자 버전을보고있는 중입니다.

caching middleware ... 두 미들웨어 클래스는 캐시 할 수있는 "게으른"방법입니다. CACHE_MIDDLEWARE_SECONDS 초 (설정되지 않은 경우 600 초로 설정 됨)의 모든 페이지를 캐시합니다.

당신은 low-level caching을 할 수 있으며 데이터가 변경되었는지 여부를 해당보기/방법에서 확인하고 적절하게 표시 할 수 있습니다. 데이터를 변경하거나 변경해야한다는 것을 어떻게 확신 할 지 확신하지는 않지만, 캐시 미들웨어와는 달리이 유형의 캐싱을 원한다고 생각합니다.

나는 최근에 장고와 함께 캐시하는 방법에 대해서만 배웠고 그들의 cache documentation은 꽤 도움이된다.

+0

답장을 보내 주셔서 감사합니다. 주요 문제는 시스템에서 페이지를 새로 고침하거나 단순히 캐싱 된 버전을 표시해야 할 때를 확인하려는 것입니다. 내 생각에, 방법 (게으른 또는보기마다)에 관계없이, 나는이 단계를 놓치고있다. 나도 장고 캐싱에 익숙하지 않으므로 모든 프로그래밍이 그렇듯이 상당한 양의 학습이 필요하다. – Garfonzo