2013-04-07 36 views
1

我已经在我管理的服务器上启用了memcached。我们有几页显示1,000个记录(这是必要的)。有了memcached,它几乎可以立即加载 - 这非常棒。但是,有时该页面应该包含零个记录,但是当我们导航到该页面时,它仍然会显示所有1,000条记录。相反,有时它应该显示1,000条记录,但由于页面用于显示零记录,所以页面从内存加载,因此显示零记录。Django - Memcached问题

我只是想知道如何处理这个。基本上,如何让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', 
) 

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

谢谢

回答

0

只看@ Django Docs的开发版本。

根据您的caching middleware ...这两个中间件类是缓存的“懒惰”方式 - 缓存每个页面的时间为CACHE_MIDDLEWARE_SECONDS秒(如果未将缺省值设置为600秒)。

你可以做low-level caching并让它在该视图/方法中确定数据是否被更改并相应显示。不确定你如何确定数据改变/应该改变,但我相信你会想要这种类型的缓存而不是缓存中间件。

我最近才了解到如何使用django进行缓存,并且他们的cache documentation帮助很大。

+0

感谢您的回复。我想主要的问题是试图确定系统何时应该重新加载页面或只显示缓存版本。我认为,无论使用何种方法(懒惰或每次浏览),我都错过了这一步。我也是Django缓存的新手,所以这是一个相当多的学习,因为所有的编程都是。 – Garfonzo 2013-04-09 20:44:49