zoukankan      html  css  js  c++  java
  • Django中的缓存(内存,文件,redis)

    一、Django中的缓存的几种方法

    1)单个视图缓存。时间测试

    import time
    from django.views.decorators.cache import cache_page
    @cache_page(5)     # 缓存5秒
    def test_time(request):
        ctime=time.time()
        return HttpResponse(ctime)

    在5秒内访问的时间不变,该缓存到了内存里面

    2)设置全局缓存

    需要在settings添加中间件

    MIDDLEWARE_CLASSES = (
        'django.middleware.cache.UpdateCacheMiddleware’,    #第一 ,重写了response的方法
        'django.middleware.common.CommonMiddleware',
        'django.middleware.cache.FetchFromCacheMiddleware',  #最后,重写了request的方法
    )
    “update” 必须配置在第一个
    “fetch” 必须配置在最后一个

    配置缓存时间:CACHE_MIDDLEWARE_SECONDS=10

    settings的示例

    MIDDLEWARE_CLASSES = (
        'django.middleware.cache.UpdateCacheMiddleware',   #响应HttpResponse中设置几个headers
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'django.middleware.security.SecurityMiddleware',
        'django.middleware.cache.FetchFromCacheMiddleware',   #用来缓存通过GET和HEAD方法获取的状态码为200的响应
    
    )
    
    
    CACHE_MIDDLEWARE_SECONDS=10
    setting.py

    视图函数编写(缓存所有视图有效)

    import time
    def test_time(request):
        ctime=time.time()
        return HttpResponse(ctime)

     3)模板层中的缓存。只缓存需要的内容。(关闭全局缓存)

    html的编写

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <script src="/static/jquery-3.3.1.js"></script>
        <title>Title</title>
    </head>
    <body>
    {% load cache %}
    
    当前时间:{{ ctime }}
    <hr>
    
    {% cache 5 'time'%}
    应用缓存:{{ ctime }}
    {% endcache %}
    
    </body>
    
    </html>
    test.html

    视图编写

    import time
    def test_time(request):
        ctime=time.time()
        return render(request,'test.html',locals())
    View Code

     4)文件中的缓存。settings配置

    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)
      }
     }   
    }
    CACBES

    视图编写

    import time
    from django.views.decorators.cache import cache_page
    @cache_page(5)
    def test_time(request):
        ctime=time.time()
        return HttpResponse(ctime)
    View Code

    访问会在配置的路径下生成缓存文件

    5)缓存到redis中。

    5.1)安装 pip3 install django-redis

    5.2)setting.py里面进行配置

    # redis配置
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 100}    # 连接池
                # "PASSWORD": "123",
            }
        }
    }
  • 相关阅读:
    代码中日志的使用
    MySQL数据库(3)----设置和使用自定义变量
    MySQL数据库(2)----检索信息
    MySQL数据库(1)----入门级操作
    Apache服务器运维笔记(6)----目录 文件 网络容器的安全问题
    Apache服务器运维笔记(5)----容器的处理顺序
    CentOS7 下安装 SublimeText3
    Apache服务器运维笔记(4)----服务器扩展部分
    Apache服务器运维笔记(3)----容器部分
    KMP算法的一个简单实现
  • 原文地址:https://www.cnblogs.com/linu/p/10122870.html
Copyright © 2011-2022 走看看