django的缓存框架

   可以使用的缓存方式:
   1.可以使用Memcached作为缓存  --- 内存,分布式 ,老---新redis(默认不支持) 
   2.可以使用数据库进行缓存 ---- 数据量大,效率低
   3.可以使用文件缓存 --- 使用不方便,效率低
   4.使用本地内存进行缓存 
        
  **5.可以接入其他存储方式 --- redis 内存,效率高

4.数据库缓存的使用: 
        1.在setting中配置缓存数据库:

         CACHES = {
            'default': {
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'my_cache_table',
            }
        }
    
               LOCATION用来指定缓存数据库表的名字

      2.执行 python manage.py  createcachetable   会自动的数据库创建缓存表
         
     3.使用: 
         直接在需要缓存的视图函数上加上装饰器即可:
          
如: @cache_page(60)
        def testCache(request):
        django会自动缓存该视图函数对应的html, ()中的参数表示缓存多长时间之后过期,单位秒
        如果没有缓存会完整的加载数据,如果有缓存数据,直接就加载缓存数据 
   
         多个url指向同一视图函数.
           每个视图缓存(如每个站点缓存)都是从URL键入的。    如果多个URL指向同一视图,则每个URL将单独缓存。    继续该my_view示例,如果您的URLconf看起来像这样:

        urlpatterns = [
            path('foo/<int:code>/', my_view),
        ]
        
       5.自定义缓存
          存,取
         # 自定义缓存
  
 def testCache(request):
    #     判断缓存中是否有数据
    #    从缓存中取数据,获取到缓存内容
        cacheTest = cache.get("testcachehtml")
        if cacheTest:#有数据--直接响应
        return HttpResponse(cacheTest)
        else:#没有数据,--加载并存到缓存中区
        time.sleep(8)
        tem = loader.get_template("testCache.html")
        strHtml = tem.render()
        # 保存到缓存中去
        cache.set("testcachehtml",strHtml,60)

        return  HttpResponse(strHtml)


     7.使用redis数据库作为缓存数据库 --快 

   
 
           1.安装对应的模块 
              pip install django-redis
                
           
2.在setting中配置
            CACHES = {
                "default": {
                "BACKEND": "django_redis.cache.RedisCache",
                "LOCATION": "redis://127.0.0.1:6379/1",
                "OPTIONS": {
                    "CLIENT_CLASS": "django_redis.client.DefaultClient",
                }
                }
            }

                 3.使用redis缓存
            
与上面数据库缓存一样的用法
            直接在需要缓存的视图函数上加上装饰器即可:
               如: @cache_page(60)
            def testCache(request):
            
django会自动缓存该视图函数对应的html, ()中的参数表示缓存多长时间之后过期,单位秒
              如果没有缓存会完整的加载数据,如果有缓存数据,直接就加载缓存数据 
            4.注意:使用redis存储,需要启动redis服务,否则会报数据连接错误
        
 启动redis
                5.测试:
            select 1 切换库
            keys * 查看所有
            get key  获取某个值

        8.缓存数据库的配置
        
常用配置:
             TIMEOUT:用于缓存的默认超时(以秒为单位)。此参数默认为300秒(5分钟)。您可以设置TIMEOUT为None默认情况下缓存键永不过期。值0使得键立即过期(实际上“不缓存”)。
                 OPTIONS中--- MAX_ENTRIES:删除旧值之前缓存中允许的最大条目数。此参数默认为300。
 

猜你喜欢

转载自blog.csdn.net/XYLHxylh/article/details/82778314
今日推荐