使用缓存可以大大提高程序的响应速度,增强用户体验。
缓存的方式有4种:数据库缓存,Redis缓存,Memcacheed缓存,程序级缓存
主要以数据库缓存和程序级缓存进行讲解
一、数据库缓存
(一)创建缓存表
终端输入命令,创建cache_table缓存表
python manage.py createcachetable cache_table
(二)添加缓存配置
settings.py:
CACHES = {
# 数据库缓存
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'cache_table' # 命令行:python manage.py createcachetable cache_table
},}
(三)编写视图函数
views.py:
from django.core.cache import caches
from django.http import HttpResponse
from django.shortcuts import render
from django.views.decorators.cache import cache_page
def db_show(request):
# 实例化缓存对象
db_cache = caches["default"]
# 判断缓存是否存在
cache_data = db_cache.get("data_cache") # 缓存的数据
if cache_data:
print("命中缓存")
return HttpResponse(cache_data)
print("没有命中,开始查找数据...")
time.sleep(10)
data = ["apple", "banana", "orange", "watermelon"]
response = render(request, "fruits.html", {"data": data})
# 设置缓存
db_cache.set("data_cache", response.content, timeout=30)
return response
配合urls.py,html文件展示
二、程序级缓存
(一)在视图函数中使用
views.py:
@cache_page(过期时间)
@cache_page(30) # 装饰器(缓存过期时间)
def show(request):
print("调用视图函数")
data = ["apple", "banana", "orange", "watermelon"]
return render(request, "fruits.html", {"data": data})
(二)在路由中使用
urls.py:
cache_page(过期时间)(视图函数)
path("pro_url/", cache_page(30)(url_show))