缓存
更快的读取数据------介质的统称,也可指加快数据读取的存储形式。
一般用于 存储
临
时
数
据
临时数据
临时数据
常用介质:内存
比磁盘快百倍
缓存的优点
加快数据读取速率,提高响应的速率
案例分析:
#url: /test_cache
#view
def test_cache(request):
#query db
data = Book.objects.all() #查询数据库有延时,假如5s
#locals() 局部变量字典
return render(request,"test_cache.html",locals())
该视图,在渲染页面时,至少需5s
怎么提高效率?
解决方案:加入缓存技术
#url: /test_cache
#view
r = redis.Redis("localhost",6379)
def test_cache(request):
#查询数据,优先走缓存
data = r.get("data")
if data:
return render(request,"test_cache.html",locals())
#缓存没有,再走数据库
data = Book.objects.all() #查询数据库有延时,假如5s
#将查询的数据,放入缓存一份
r.set("data",data)
#locals() 局部变量字典
return render(request,"test_cache.html",locals())
if 请求的页面 in cache:
返回
else:
渲染页面,放入缓存,并返回
缓存使用场景
渲染页面的复杂度高--------------考虑缓存
- 博客列表页,有多项数据
- 电商商品详情页,信息短时间不变
缓存的地方,变化频率低
Django配置缓存
- 数据库缓存
存于磁盘,数据量少,读取速度快 - 内存缓存
存于内存,读取速度快,如redis
#settings.py中配置
#磁盘缓存
CACHES = {
"default":{
"BACKEND":"django.core.cache.backends.db.DatabaseCache",
"LOCATION":"cache_table", #python3 manage.py createcachetable
"TIMEOUT":300, #默认存储300s 过期
"OPTIONS":{
"MAX_ENTRIES":300, #最多存储300条
"CULL_FREQUENCY":2,#满时,删除2条
}
}
}
#内存缓存使用django-redis
#sudo pip3 install django-redis
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://localhost:6379/1",
#"LOCATION": "redis://user:pw@localhost:6379/1",
"TIMEOUT": 300, #300s
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": "xxxxx",
}
}
}
练习
创建一个django项目
1. 配置MySQL,建库
2. 配置缓存
3. Django使用缓存------>整体缓存
3.1 路由中,使用缓存
path(“test_cache/”,cache_page(30)(cache_view))
3.2 视图中,使用缓存
from django.views.decorators.cache import cache_page
@cache_page(30)
def cache_view(request):
xxx
4. 定义一个视图函数,响应当前时间戳,查看响应
5. 加入缓存,再次查看响应
代码
提取码:5kyz