Django

Code

Ticket #6791: cached_db_docs_and_tests.diff

File cached_db_docs_and_tests.diff, 5.5 kB (added by jdunck, 8 months ago)

Changed default session backend to cached_db. Changed docs to be betterer. ;-) Added tests.

  • django/conf/global_settings.py

    old new  
    279279# SESSIONS # 
    280280############ 
    281281 
    282 SESSION_COOKIE_NAME = 'sessionid'                       # Cookie name. This can be whatever you want. 
    283 SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2               # Age of cookie, in seconds (default: 2 weeks). 
    284 SESSION_COOKIE_DOMAIN = None                            # A string like ".lawrence.com", or None for standard domain cookie. 
    285 SESSION_COOKIE_SECURE = False                           # Whether the session cookie should be secure (https:// only). 
    286 SESSION_COOKIE_PATH = '/'                               # The path of the session cookie. 
    287 SESSION_SAVE_EVERY_REQUEST = False                      # Whether to save the session data on every request. 
    288 SESSION_EXPIRE_AT_BROWSER_CLOSE = False                 # Whether sessions expire when a user closes his browser. 
    289 SESSION_ENGINE = 'django.contrib.sessions.backends.db'  # The module to store session data 
    290 SESSION_FILE_PATH = '/tmp/'                             # Directory to store session files if using the file session module 
     282SESSION_COOKIE_NAME = 'sessionid'                              # Cookie name. This can be whatever you want. 
     283SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2                      # Age of cookie, in seconds (default: 2 weeks). 
     284SESSION_COOKIE_DOMAIN = None                                   # A string like ".lawrence.com", or None for standard domain cookie. 
     285SESSION_COOKIE_SECURE = False                                  # Whether the session cookie should be secure (https:// only). 
     286SESSION_COOKIE_PATH = '/'                                      # The path of the session cookie. 
     287SESSION_SAVE_EVERY_REQUEST = False                             # Whether to save the session data on every request. 
     288SESSION_EXPIRE_AT_BROWSER_CLOSE = False                        # Whether sessions expire when a user closes his browser. 
     289SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'  # The module to store session data 
     290SESSION_FILE_PATH = '/tmp/'                                    # Directory to store session files if using the file session module 
    291291 
    292292######### 
    293293# CACHE # 
  • django/contrib/sessions/tests.py

    old new  
    33>>> from django.conf import settings 
    44>>> from django.contrib.sessions.backends.db import SessionStore as DatabaseSession 
    55>>> from django.contrib.sessions.backends.cache import SessionStore as CacheSession 
     6>>> from django.contrib.sessions.backends.cached_db import SessionStore as CacheDBSession 
    67>>> from django.contrib.sessions.backends.file import SessionStore as FileSession 
    78>>> from django.contrib.sessions.backends.base import SessionBase 
    89 
     
    2324>>> db_session.exists(db_session.session_key) 
    2425False 
    2526 
     27>>> cdb_session = CacheDBSession() 
     28>>> cdb_session.modified 
     29False 
     30>>> cdb_session['cat'] = "dog" 
     31>>> cdb_session.modified 
     32True 
     33>>> cdb_session.pop('cat') 
     34'dog' 
     35>>> cdb_session.pop('some key', 'does not exist') 
     36'does not exist' 
     37>>> cdb_session.save() 
     38>>> cdb_session.exists(cdb_session.session_key) 
     39True 
     40>>> cdb_session.delete(cdb_session.session_key) 
     41>>> cdb_session.exists(cdb_session.session_key) 
     42False 
     43 
    2644>>> file_session = FileSession() 
    2745>>> file_session.modified 
    2846False 
  • docs/sessions.txt

    old new  
    5353sure to check that your Web server has permissions to read and write to 
    5454this location. 
    5555 
    56 Using cache-based sessions 
    57 -------------------------- 
     56Using cached sessions 
     57--------------------- 
    5858 
    59 To store session data using Django's cache system, set ``SESSION_ENGINE`` 
    60 to ``"django.contrib.sessions.backends.cache"``. You'll want to make sure 
    61 you've configured your cache; see the `cache documentation`_ for details. 
     59There are two cache backends for Django.  Setting ``SESSION_ENGINE`` to  
     60``"django.contrib.sessions.backends.cache"`` uses a simple caching session  
     61store, while ``"django.contrib.sessions.backends.cached_db"`` uses a  
     62write-through cache.  In a write-through cache, every write to the cache  
     63causes a write to the backing store, while reads only use the backing store 
     64on a cache miss.  Both session stores offer high performance, but the simple 
     65cache store trades more performance for persistence. 
    6266 
     67You'll want to make sure you've configured your cache; see the  
     68`cache documentation`_ for details. 
     69 
    6370.. _cache documentation: ../cache/ 
    6471 
    6572.. note:: 
     73    If you decide to use the ``cache`` session store, you should  
     74    probably only use the memcached cache backend. The local memory and simple  
     75    cache backends don't retain data long enough to be good choices; It'll be  
     76    faster to use file or database sessions directly instead of sending  
     77    everything through the file or database cache backends. 
    6678 
    67     You should probably only use cache-based sessions if you're using the 
    68     memcached cache backend. The local memory and simple cache backends 
    69     don't retain data long enough to be good choices, and it'll be faster 
    70     to use file or database sessions directly instead of sending everything 
    71     through the file or database cache backends. 
    7279 
     80 
    7381Using sessions in views 
    7482======================= 
    7583