From c11f9c3193901215ec79732af6ab6c66b3c1c2ba Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Sun, 27 Nov 2011 18:36:03 +0000 Subject: [PATCH] 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 --- django/contrib/sessions/backends/cached_db.py | 2 ++ django/contrib/sessions/tests.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/django/contrib/sessions/backends/cached_db.py b/django/contrib/sessions/backends/cached_db.py index 580e907c30d..342aa600d31 100644 --- a/django/contrib/sessions/backends/cached_db.py +++ b/django/contrib/sessions/backends/cached_db.py @@ -28,6 +28,8 @@ class SessionStore(DBStore): return data def exists(self, session_key): + if (KEY_PREFIX + session_key) in cache: + return True return super(SessionStore, self).exists(session_key) def save(self, must_create=False): diff --git a/django/contrib/sessions/tests.py b/django/contrib/sessions/tests.py index f94753cbcfd..50297dce2f2 100644 --- a/django/contrib/sessions/tests.py +++ b/django/contrib/sessions/tests.py @@ -293,6 +293,11 @@ class CacheDBSessionTests(SessionTestsMixin, TestCase): 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)