1

我在我管理的服务器上启用了 memcached。我们有几页显示超过 1,000 条记录(这是必要的)。使用 memcached,它几乎可以立即加载——这很棒。但是,有时该页面应该包含零条记录,尽管当我们导航到该页面时,它仍然显示所有 1,000 条记录。相反,有时它应该显示 1,000 条记录,但由于该页面用于显示零记录,因此该页面从内存加载,因此显示零记录。

我只是想知道如何处理这个问题。基本上,如何让 memcache 系统知道何时请求实际上是针对一组不同的数据,而不仅仅是加载缓存的页面。

这是我的 settings.py 文件(相关行):

  CACHES = {
      'default': {
          'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
          '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.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.cache.FetchFromCacheMiddleware',
 )

有什么想法吗?我做错了吗?

谢谢

4

1 回答 1

0

只是看@ Django Docs 的开发版本。

根据您的缓存中间件......这两个中间件类是缓存的“惰性”方式 - 它缓存每个页面CACHE_MIDDLEWARE_SECONDS秒(如果未设置默认值为 600 秒)。

您可以进行低级缓存并让它在该视图/方法中确定数据是否已更改并相应地显示它。不确定您如何确定数据更改/应该更改,尽管我相信您想要这种类型的缓存而不是那种缓存中间件。

我最近才了解如何使用 django 进行缓存,他们的缓存文档很有帮助。

于 2013-04-09T18:09:19.807 回答