1,首先我们先来了解一下什么是缓存:
缓存是一类可以更快的读取数据的介质统称,也指其它可以加快数据读取的存储方式。一般用来存储临时数据,常用介质的是读取速度很快的内存。一般来说从数据库多次把所需要的数据提取出来,要比从内存或者硬盘等一次读出来付出的成本大很多。对于中大型网站而言,使用缓存减少对数据库的访问次数是提升网站性能的关键之一。
2,为什么使用缓存:
在Django
中,当用户请求到达视图后,视图会先从数据库提取数据放到模板中进行动态渲染,渲染后的结果就是用户看到的网页。如果用户每次请求都从数据库提取数据并渲染,将极大降低性能,不仅服务器压力大,而且客户端也无法即时获得响应。如果能将渲染后的结果放到速度更快的缓存中,每次有请求过来,先检查缓存中是否有对应的资源,如果有,直接从缓存中取出来返回响应,节省取数据和渲染的时间,不仅能大大提高系统性能,还能提高用户体验。
我们来看一个实际的例子。每次当我们访问首页时,下面视图都会从数据库中提取数据列表,并渲染的模板里去。大多数情况下,我们的数据不会更新得那么频繁,所以数据列表是不变的。这样用户在一定时间内多次访问首页时都从数据库重新读取同样的数据是一种很大的浪费。
from django.shortcuts import render
def index(request):
# 读取数据库然后渲染到网页
# 查询所有数据的方法
article_list = Article.objects.all()
return render(request, 'index.html', {
'article_list': article_list})
使用缓存Cache
就可以帮我们解决这个问题。当用户首次访问时,我们从数据库中提取数据列表,并将其存储到缓存里(常用的是内存,这取决于你的设置)。当用户在单位时间内再次访问首页时, Django
先检查缓存是否过期(本例是15分钟), 再检查缓存里数据列表资源是否存在,如果存在,直接从缓存中读取数据, 并渲染模板。
from django.shortcuts import render
from django.views.decorators.cache import cache_page
@cache_page(60 * 15) # 秒数,这里指缓存 15 分钟
def index(request):
#查询所有数据的方法
article_list = Article.objects.all()
return render(request, 'index.html', {
'article_list': article_list})
**注意事项:在使用缓存前记得做好必要的设置**
3,现在我们已经介绍完缓存,接下来是六种缓存的方式以及配置
3.1 开发调试缓存(这个模式是开发调试使用的,不需要执行任何操作)
settings.py
文件中配置
CACHES = {
'default': {