1、全站缓存 (在setting.py中添加中间件)
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware', # 必须放在第一个
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware', # 必须放在最后一个
]
CACHES = {
'default': {
# 本地内存缓存
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
CACHE_MIDDLEWARE_KEY_PREFIX = ''
CACHE_MIDDLEWARE_SECONDS = 600
CACHE_MIDDLEWARE_ALIAS = 'default' # 或选用redis
2、views层级缓存
from django.views.decorators.cache import cache_page
@cache_page(60*15) # 15分钟 (单位s)
def index_view(requet):
stus = Stu.objects.all()
return render(request, 'index.html', {'stus': stus})
3、模板层级
{% load cache %}
{% cache 5000 缓存名称 %} #这里是缓存5秒
{% for stu in stus %}
<li>{{ stu.sname }}</li>
{% endfor %}
{% endcache %}
Redis缓存
1、先安装库 pip install django-redis
CACHES = {
'default': {
# 本地内存缓存
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
},
# 设置redis
'redis':{
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
CACHE_MIDDLEWARE_KEY_PREFIX = ''
CACHE_MIDDLEWARE_SECONDS = 600
CACHE_MIDDLEWARE_ALIAS = 'redis'
2、python Console代码测试
from django.core.cache import caches
# 存入redis缓存
cacheobj = caches['redis']
cacheobj = set('redis', '值')
cacheobj.get('redis')
**参考文档**
https://django-redis-chs.readthedocs.io/