【问题标题】:Django doesn't use memcached frameworkDjango 不使用 memcached 框架
【发布时间】:2017-05-16 22:18:15
【问题描述】:

我正在尝试了解 Django 缓存框架是如何工作的。我在settings.py 中设置了 memcached,但加载页面的时间并没有变小,并且 Django-debug-toolbar 显示 0 个缓存调用。

这是我在 settings.py 中设置的:

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

CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
CACHE_MIDDLEWARE_ALIAS = "default"
CACHE_MIDDLEWARE_SECONDS  = 60

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'querycount.middleware.QueryCountMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',

]

现在我用一个对象表刷新了两次页面。我认为第二次应该没有数据库查找,因为没有任何变化。

我错过了什么?

【问题讨论】:

  • 好吧,你已经设置了缓存后端(出于某种原因,设置了两次,但第二个设置不再使用),但你真的缓存了什么吗?如果是在哪里?
  • 我认为它会缓存任何数据库查找和其他昂贵的操作。根据本教程中的标题缓存整个站点:tutorialspoint.com/django/django_caching.htm 难道django不能自动做缓存吗?
  • 我在一个视图上设置了@cache_control(must_revalidate=True, max_age=3600),它没有缓存任何东西。
  • 请在此处发布您正在访问的视图

标签: python django memcached django-cache


【解决方案1】:

您应该将@cache_page 装饰器放在您的视图上以启用该视图的缓存。示例见https://docs.djangoproject.com/en/1.10/topics/cache/#the-per-view-cache

【讨论】:

    猜你喜欢
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 2011-05-05
    • 2021-01-26
    • 2020-04-19
    • 2014-11-30
    相关资源
    最近更新 更多