Django中的缓存方式
缓存方式:缓存的位置
-
开发调试缓存:没有缓存
-
缓存到内存中
-
缓存到数据库
-
缓存到文件
-
缓存到redis
缓存位置的配置(在setting中配置,BACKEND不同,缓存的位置不同)
文件缓存setting
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', #指定缓存使用的引擎
'LOCATION': '/var/tmp/django_cache', #指定缓存的路径
'TIMEOUT':300, #缓存超时时间(默认为300秒,None表示永不过期)
'OPTIONS':{
'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
}
}
}
缓存粒度
-
全站缓存
-
单页面缓存
-
局部缓存
缓存的使用
需要配置setting文件,将CACHE配置进去
单页面缓存:
from django.views.decorators.cache import cache_page
import time
from .models import *
@cache_page(15) #超时时间为15秒
def index(request):
t=time.time() #获取当前时间
bookList=Book.objects.all()
return render(request,"index.html",locals())
全站缓存:
缓存整个站点,是最简单的缓存方法
在 MIDDLEWARE_CLASSES 中加入 “update” 和 “fetch” 中间件
MIDDLEWARE_CLASSES = (
‘django.middleware.cache.UpdateCacheMiddleware’, #第一
'django.middleware.common.CommonMiddleware',
‘django.middleware.cache.FetchFromCacheMiddleware’, #最后
)
“update” 必须配置在第一个
“fetch” 必须配置在最后一个
局部缓存:
{% load cache %}
{% cache 5 'test'%} 第一个参数表示缓存时间,第二个参数是key值(取缓存的时候,需要根据key值取)
当前时间:{{ time }}
{% endcache %}
高级用法:
前后端分离项目
# 设置值与取值
cache.set('test_data',{'name':'lqz','age':18},5)
cache.get('test_data')