drf11 django缓存

一、缓存

缓存的类型

缓存是指保存一些计算开销较大的数据,可以是某个网页,也可以是网页的一部分,或者仅仅只是格式化的数据,比如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')
    -应用场景:
    	-第一次查询所有图书,你通过多表联查序列化之后的数据,直接缓存起来
        -后续,直接先去缓存查,如果有直接返回,没有,再去连表查,返回之前再缓存

分类型

内存

文件

数据库

posted @ 2023-06-04 15:09  派森的猫  阅读(28)  评论(0)    收藏  举报