0

我正在尝试设置按视图缓存并阅读了几次文档,尽管它仍然不起作用。

我确实看到正在使用 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):
4

1 回答 1

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”

也许这有帮助。

于 2013-08-16T08:02:08.270 回答