Optimized the cached_db session backend to check if a key exists in the cache first.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17156 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Aymeric Augustin 2011-11-27 18:36:03 +00:00
parent bda21e2b9d
commit c11f9c3193
2 changed files with 7 additions and 0 deletions

View File

@ -28,6 +28,8 @@ class SessionStore(DBStore):
return data return data
def exists(self, session_key): def exists(self, session_key):
if (KEY_PREFIX + session_key) in cache:
return True
return super(SessionStore, self).exists(session_key) return super(SessionStore, self).exists(session_key)
def save(self, must_create=False): def save(self, must_create=False):

View File

@ -293,6 +293,11 @@ class CacheDBSessionTests(SessionTestsMixin, TestCase):
backend = CacheDBSession backend = CacheDBSession
def test_exists_searches_cache_first(self):
self.session.save()
with self.assertNumQueries(0):
self.assertTrue(self.session.exists(self.session.session_key))
CacheDBSessionWithTimeZoneTests = override_settings(USE_TZ=True)(CacheDBSessionTests) CacheDBSessionWithTimeZoneTests = override_settings(USE_TZ=True)(CacheDBSessionTests)