【问题标题】:Django - Memcached issuesDjango - 内存缓存问题
【发布时间】:2013-04-07 17:53:23
【问题描述】:

我在我管理的服务器上启用了 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',
 )

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

谢谢

【问题讨论】:

    标签: django memcached


    【解决方案1】:

    只是看@Django Docs 的开发版。

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

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

    我最近才知道如何使用 django 进行缓存,他们的 cache documentation 帮助很大。

    【讨论】:

    • 感谢您的回复。我想主要问题是试图确定系统何时应该重新加载页面或简单地显示缓存版本。我认为,无论使用哪种方法(惰性或按视图),我都错过了这一步。我也是 Django 缓存的新手,所以这是一个相当多的学习,就像所有的编程一样。
    猜你喜欢
    • 2015-06-19
    • 2014-04-11
    • 2011-11-22
    • 2017-11-05
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2011-09-03
    相关资源
    最近更新 更多