关于Django中Memcached的会话,当我设置SESSION_COOKIE_AGE = 0时,缓存到期时间为300s

时间:2014-06-27 01:00:07

标签: python django session caching python-memcached

我的Django Settings.py就是这样:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        #'LOCATION': os.environ['MEMCACHED']
        'LOCATION': "127.0.0.1",
         #"BINARY" : True,
    },
}
SESSION_SAVE_EVERY_REQUEST = True
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_AGE = 0 

我将会话存储在memcached上。 ,缓存到期时间为300秒!!

作为django文档,他们说SESSION_COOKIE_AGE = 0表示从不超时,但它没有用于缓存超时?

所以,现在我想让会话缓存永远不会超时,直到浏览器关闭?

不要告诉我只设置SESSION_EXPIRE_AT_BROWSER_CLOSE,因为我将会话存储在memcached中,缓存也有一个过期时间。我希望缓存永不过期。

感谢。

2 个答案:

答案 0 :(得分:1)

我找到了原因!

CACHES中有Settings.py。当您使用memcached存储会话时,设置SESSION_COOKIE_AGE=0。 Django将为每个缓存使用默认超时(300s)。

如果您希望设置缓存永不超时,则需要将TIMEOUT=0添加到CACHES

答案 1 :(得分:0)

编辑:我在2006年发现这篇文章https://groups.google.com/forum/#!topic/django-users/oLZTAAA6wVE 尝试将此设置放入应用的settings.py。

我认为你可以把失效时间放在很远的地方(例如2050),它应该可以工作。尝试一下,谁知道:p。