zoukankan      html  css  js  c++  java
  • drf-缓存相关

    settings.py文件的配置

    # 缓存相关配置
    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)
            }
        }
    }


    MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware', # 第一 位置必须放这里
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware', # 最后 位置必须放这里

    ]
    第一个位置和最后一个位置是必须放正确的,不然会报错,中间是本来的中间件
     

    在视图文件views.py文件中进行 缓存相关书写

    # 单页面缓存
    from django.views.decorators.cache import cache_page
    
    
    class Person:   #自己书写这个类,后面都可以实例化,进行数据的存储和调用
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    
    from django.core.cache import cache
    
    
    # @cache_page(5) # 这里是缓存5秒
    def test1_cache(request):
        p = Person('egon', 18) # 实例化
        cache.set('name', p)  # 缓存的存储
        import time
        ctime = time.time() # 给页面缓存一个时间而已
        print('xxxxx') # 测试用的 不要也行
        return render(request, 'index.html', context={'ctime': ctime})
            #  render三板斧的格式语句, 给index这个页面,返回 ctime这个变量:ctime
    
    
    def test2_cache(request):
        p = cache.get('name')# 获取缓存中的数据
        print(p.name) # 可以在后台打印出来,后续若是想想用,可以直接调用的
        import time
        ctime = time.time()
        return render(request, 'index.html', context={'ctime': ctime})
    #  render三板斧的格式语句, 给index这个页面,返回 ctime这个变量:ctime

    配置完视图后 加路由

    from app_jwt import views
    from django.urls import path, re_path
    from rest_framework_jwt.views import obtain_jwt_token
    
    urlpatterns = [
    
    
        # 缓存
        path('test1/',views.test1_cache),
        path('test2/',views.test2_cache),
    
    ]

    测试 test1进行存储 ,test2进行获取

     

     

     后台就能看到获取的缓存数据,也就是实例化的用户名

    # 前后端分离缓存的使用
    - 如何使用
    from django.core.cache import cache
    cache.set('key',value可以是任意数据类型)
    cache.get('key')
    -应用场景:
    -第一次查询所有图书,你通过多表联查序列化之后的数据,直接缓存起来
    -后续,直接先去缓存查,如果有直接返回,没有,再去连表查,返回之前再缓存
  • 相关阅读:
    aop
    javascript学习笔记
    Hibernate一对多关联映射的配置及其级联删除问题
    Hibernate一对多单向关联和双向关联映射方法及其优缺点 (待续)
    剑指offer---08---动态规划:跳台阶
    剑指offer---07---动态规划:斐波那契数列
    剑指offer---06---数组,二分法---旋转数组的最小数字
    剑指offer---05---用栈实现队列
    剑指offer---03---从尾到头打印链表---链表
    剑指offer---04-树--重建二叉树(前序和中序)
  • 原文地址:https://www.cnblogs.com/xiao-zang/p/13308330.html
Copyright © 2011-2022 走看看