为什么Django的每站点缓存中间件对我不起作用?

6 投票
1 回答
1810 浏览
提问于 2025-04-16 11:22

我正在使用Django 1.3 beta 1,并设置了memcached。我根据Django的说明对我的settings.py文件进行了修改:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    #'debug_toolbar.middleware.DebugToolbarMiddleware',
)
CACHE_MIDDLEWARE_SECONDS = 100000
CACHE_MIDDLEWARE_KEY_PREFIX = 'site_cache'

这是我正在测试的视图函数:

def home(request):

    print 'uncached'

    # ...View's code...

我总是在开发服务器的输出中看到uncached,而且每次都会访问数据库。为什么会这样?我是不是漏掉了什么,或者对缓存的理解完全错误?

编辑 #1:

模板片段缓存工作得很好。我是不是又漏掉了什么?请帮帮我。

1 个回答

0

看起来你的一切设置都没问题。根据文档,我能想到的唯一一个小问题是:

The cache middleware caches every page that doesn't have GET or POST parameters.

不过,我想你可能已经知道这个了,所以这对你可能没什么帮助。

撰写回答