一、缓存
缓存的类型
缓存是指保存一些计算开销较大的数据,可以是某个网页,也可以是网页的一部分,或者仅仅只是格式化的数据,比如json等。合理运用缓存技术可以减少数据库访问次数以及计算时间,从而加快网页的访问速度。
Django提供了一个健壮的缓存系统,可以保存动态页面,这样就不必每个请求都计算一遍相同的结果。并且Django还提供了不同级别的缓存粒度:可以缓存特定视图的输出,或者只缓存那些难以生成的片段,或者缓存整个站点。
Django还能很好地处理“下游”缓存,比如基于浏览器的缓存。这些是不能直接控制的缓存类型,但是可以通过HTTP头信息给与提示,关于应该缓存站点的哪些部分,以及如何缓存。
要使用缓存系统需要先在settings.py中设置,Django提供多种缓存类型:Memcached缓存,数据库缓存,文件系统缓存,局部内存缓存和自定义缓存等。
如何使用?
# 在项目的settings中配置
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', #指定缓存使用的引擎
'LOCATION': 'D:\django_cache', #指定缓存的路径
'TIMEOUT':300, #缓存超时时间(默认为300秒,None表示永不过期)
'OPTIONS':{
'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
}
}
}
# 使用
from django.core.cache import cache
cache.set('key',value,time) # time 按照秒
cache.get('key')
分模式
前后端混合
-缓存的位置,通过配置文件来操作(以文件为例)
-缓存的粒度:
-全站缓存
中间件
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware',
。。。。
'django.middleware.cache.FetchFromCacheMiddleware',
]
CACHE_MIDDLEWARE_SECONDS=10 # 全站缓存时间
-单页面缓存
在视图函数上加装饰器
from django.views.decorators.cache import cache_page
@cache_page(5) # 缓存5s钟
def test_cache(request):
import time
ctime=time.time()
return render(request,'index.html',context={'ctime':ctime})
-页面局部缓存
{% load cache %}
{% cache 5 'name' %} # 5表示5s钟,name是唯一key值
{{ ctime }}
{% endcache %}
前后端分离
# 前后端分离缓存的使用
- 如何使用
from django.core.cache import cache
cache.set('key',value可以是任意数据类型)
cache.get('key')
-应用场景:
-第一次查询所有图书,你通过多表联查序列化之后的数据,直接缓存起来
-后续,直接先去缓存查,如果有直接返回,没有,再去连表查,返回之前再缓存
分类型
内存
文件
数据库