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

发布于 2024-10-16 13:52:57 字数 1219 浏览 3 评论 0 原文

我正在使用 Django 1.3 beta 1 并设置 memcached。我根据 settings.py 进行了更改“noreferrer”>Django 的说明

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:

模板片段缓存工作得很好。我只是错过了什么吗?请帮忙。

I am using Django 1.3 beta 1 and set up memcached. I made changes to my settings.py per Django's instructions:

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'

This is the test view function I'm hitting:

def home(request):

    print 'uncached'

    # ...View's code...

I always get uncached printed on the development server's output and I always get hits to the database. Why? Am I missing something or just misunderstanding caching completely?

Edit #1:

Template fragment caching works perfectly fine. Am I just missing something? Please help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过气美图社 2024-10-23 13:52:57

看来您已正确设置所有内容。我在文档中看到的唯一可能的警告如下:

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

不幸的是,我假设您已经知道这一点,并且它不会对您有帮助。

It appears that you have everything set up correctly. The only possible caveat I can see in the documentation is the following:

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

Unfortunately, I'm assuming you already know this and it won't help you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文