2009-07-05 3 views
3

저는 작은 프로젝트를 수행 중이며 최종 사용자에게 여러 캐싱 옵션을 제공하려고합니다. 장고와 함께 memcached를 데이터베이스 나 파일 기반 캐싱으로 바꾸는 것이 매우 단순하다고 생각했습니다. 내 memcached 구현 아무 문제없이 챔피언처럼 작동합니다. 내 페이지에 타임 스탬프를 넣었고, 제대로 작동하려면 캐싱을 원하는 위치에 이전 타임 스탬프가 일관되게 표시됩니다. 그러나 데이터베이스 캐싱으로 전환하면 데이터베이스에 항목이 없으며 캐싱이 깔끔하게 작동하지 않습니다. (존재 필요한 manage.py를 실행 한 후Django 데이터베이스 캐싱

CACHE_BACKEND = 'db://cache_table' 

표 :

CACHE_BACKEND = 'memcached://localhost:11211' 

사람 : 내가 필요하다면 모든 문서에 표시되는 내용에서

은 백엔드를 변경하는 것입니다 createcachetable) 행을 볼 수 있습니다. 현재 테스트 중이므로 sqlite3을 사용하고 있습니다. 그러나 말할 수있는 한 중요하지 않습니다. 테이블이 완전히 비어 있고 언제든지 쓰여지지 않았 음을 확인할 수 있습니다. 또한 이전에 언급했듯이 타임 스탬프는 '잘못'되어 더 나은 증거가 될 수 있습니다.

의견이 있으십니까? 나는 sjiteite, Django 1.0.2, Python 2.6을 현재 Apache를 통해 Ubuntu Jaunty 컴퓨터에서 사용하고 있습니다. 나는 단순한 무언가에 광택을 붙이고 있다고 확신한다. 제공된 모든 도움에 감사드립니다.

답변

7

이 문서에 따르면, 당신은하지 syncdb를 사용하지만, 다음과 같이 테이블을 만들 거 야 : 당신이하지 않은 경우

python manage.py createcachetable cache_table 

, 그 시도하고 그것이 작동하지 않는 경우를 참조하십시오.

+0

오타되었습니다. 죄송합니다. 그것을 정정했다 – f4nt

+0

@lemonad 일단 내가 뭔가를 업데이 트하고 같은 API를 업데이 트 데이터가 캐시 된 데이터베이스에서 제공 받고있어, 어떻게이 문제를 처리해야합니까? –

+0

@ PiyushS.Wanare이 질문은 2009 년 이후이므로 새로운 질문을하는 것이 좋습니다. 그러나 일반적으로 캐시 무효화 체계를 제공해야합니다. 즉, 무언가를 업데이트하면 캐시에서 값을 수동으로 삭제해야합니다. 그렇지 않으면 이전 값이 여전히 제공됩니다. – lemonad