2011-03-16 3 views
3

캐시? 약 25,000 명의 동시 사용자가 있다고 가정합니다. 각 사용자는 많은 데이터베이스 변경 작업을 수행합니다 (예 : 브라우저 게임). 그 차이가 눈에 띄는 것일까?장고 나는이 개 질문이 세션

2) 데이터베이스가없는 캐시 된 세션 사용 : 주어진 사용자가 로그인했는지 확인하는 방법 (동일한 계정에 여러 개의 로그인을 허용하지 않음)?

답변

5

내 경험 차이는 엄청납니다. 시나리오에서 세션이 생성되거나 변경 될 때마다 db write가 생성됩니다. 사용자가 사이트에 액세스 할 때마다 db 읽기가 생성됩니다. 이것을 DB 밖으로 이동하면 요청 당 하나 이상의 쿼리가 저장됩니다.

이 추가 트래픽과 정상적인 앱 트래픽은 쉽게 데이터베이스 성능을 저하시킬 수 있습니다.

. 2.

심지어 DB 백업 세션에 사용자가 한 번 기록되어 있는지 확인하는 명확한 방법이 없습니다 (모든 세션 데이터를 읽고 그것을 depickling 다음 필터링 명확한 방법 : 없음) 할

여기 아마 캐시를 사용할 것입니다 : 사용자가 로그인 할 때마다 캐시에 키 (예 : user : <user_id>)가 있는지 확인하십시오. 저장된 값은 세션 ID가되며 현재 세션이 다른 경우 저장됩니다 하나 - 오래된 세션 만료, 새 세션 ID 저장

하지만

조차 한 것이다 (SESSION_EXPIRE_AT_BROWSER_CLOSE이 False 특히 - 기본값) 항상 일이, 때로는 브라우저 탭/창 같은 쿠키를 공유하고 세션이 전적으로 쿠키 기반으로합니다.

+0

답변을 주셔서 감사합니다. :) (2)에 관해서는 이것을 구현하지 않기로 결정했습니다. 주로 같은 계정에 여러 로그인에 문제가 없으므로 어쨌든 고마워! – freakish

관련 문제