【问题标题】:Django per-view caching not cachingDjango按视图缓存不缓存
【发布时间】:2013-08-18 09:52:04
【问题描述】:

我正在尝试设置按视图缓存并已阅读文档几次,但仍然无法正常工作。

我确实看到正在使用 Memcache,但它似乎不是视图,因为我在那里的时间戳已更新。

MIDDLEWARE_CLASSES = (
    'django.middleware.gzip.GZipMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'web.middleware.WebMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.middleware.http.ConditionalGetMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
)


# Memcache

os.environ['MEMCACHE_SERVERS'] = os.environ.get('MEMCACHIER_SERVERS', '').replace(',', ';')
os.environ['MEMCACHE_USERNAME'] = os.environ.get('MEMCACHIER_USERNAME', '')
os.environ['MEMCACHE_PASSWORD'] = os.environ.get('MEMCACHIER_PASSWORD', '')

CACHES = {
  'default': {
    'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
    'TIMEOUT': 500,
    'BINARY': True,
    'OPTIONS': { 'tcp_nodelay': True }
  }
}

# URL conf

cache_ttl = 24 * 60 * 60

url(r'^categories/$', cache_page(cache_ttl)(main.categories)),

# View

@ensure_csrf_cookie
def categories(request):

【问题讨论】:

    标签: django caching heroku memcached


    【解决方案1】:

    我认为你的代码有一些错误:)

    1. UpdateCacheMiddleware 必须是第一个中间件,FetchFromCacheMiddleware 必须是最后一个 (https://docs.djangoproject.com/en/dev/topics/cache/#the-per-site-cache)
    2. 不知道 'django_pylibmc' 是否是您缓存后端的快捷方式,但在我的设置中它是“django.core.cache.backends.memcached.PyLibMCCache”

    也许有帮助。

    【讨论】:

    • perview缓存也需要中间件吗?
    猜你喜欢
    • 2016-07-05
    • 1970-01-01
    • 2012-04-24
    • 2012-03-10
    • 2011-09-26
    • 2015-10-20
    • 1970-01-01
    • 2018-02-12
    • 2013-12-07
    相关资源
    最近更新 更多