版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z564359805/article/details/90175266
设置缓存:
- 通过设置决定把数据缓存在哪里,是数据库中、文件系统还是在内存中
- 通过setting文件的CACHES配置来实现
- 参数TIMEOUT:缓存的默认过期时间,以秒为单位,这个参数默认是300秒,即5分钟;设置TIMEOUT为None表示永远不会过期,值设置成0造成缓存立即失效
Django自带了一个健壮的缓存系统来保存动态页面(缓存到本地内存中):
CACHES={
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'TIMEOUT': 60,
}
}
将cache存到redis中,默认采用1数据库,需要安装包并配置如下:
安装包:pip install django-redis-cache
settings.py中配置:
CACHES = {
"default": {
"BACKEND": "redis_cache.cache.RedisCache",
"LOCATION": "localhost:6379",
'TIMEOUT': 60,
},
}
views.py中:
from django.views.decorators.cache import cache_page
from django.core.cache import cache
import random
# 视图缓存练习 60秒过期时间
@cache_page(60)
def view_cache(request):
# 视图缓存
return HttpResponse('hello1')
# return HttpResponse('hello2')
# 模板缓存练习
def template_cache(request):
return render(request,'template_cache.html')
# 底层的缓存API
def cache_api(request):
result = random.randrange(1,4)
if result == 1:
# 设置缓存
cache.set('key1','value',60)
print(result,cache.get('key1'))
return render(request, 'template_cache.html')
elif result == 2:
# 清空缓存
cache.clear()
print(result)
return HttpResponse('所有缓存已清理')
else:
if cache.get('key1'):
# 删除指定的键key1
cache.delete('key1')
return HttpResponse('键key1缓存已清理')
else:
# 设置缓存
cache.set('key1', 'value', 60)
return HttpResponse('键key1已设置')
配置urls.py:
from django.urls import path
urlpatterns = [
# 单个view缓存
path('view_cache/', views.view_cache),
# 视图缓存与URL无关,如果多个URL指向同一视图,每个URL将会分别缓存
path('view_cache2/', views.view_cache),
# 模板片断缓存
path('template_cache/', views.template_cache),
# 底层的缓存API
path('cache_api/', views.cache_api),
]
templates新建template_cache.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% load cache %}
<!--缓存时间60秒-->
{% cache 60 hello %}
模板缓存hello
<!--模板缓存hello2-->
{% endcache %}
</body>
</html>
启动服务:
python manage.py runserver
输入网址分别查看:
http://127.0.0.1:8000/view_cache/
扫描二维码关注公众号,回复:
6233214 查看本文章
http://127.0.0.1:8000/view_cache2/