我在我管理的服务器上启用了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',
)
有什么想法?我做错了吗?
由于
答案 0 :(得分:0)
只是查看@ Django Docs的开发版。
根据你的caching middleware ......这两个中间件类是缓存的“懒惰”方式 - 它将每个页面缓存CACHE_MIDDLEWARE_SECONDS秒(如果未设置默认值为600秒)。
您可以执行low-level caching并让它在该视图/方法中确定数据是否已更改并相应地显示。不确定如何确定数据更改/应该更改,但我相信您需要这种类型的缓存而不是缓存中间件。
我最近才知道如何使用django进行缓存,他们的cache documentation有很大的帮助。