zoukankan      html  css  js  c++  java
  • django memcached/redis缓存 =====缓存session

    • 全站使用

    例如 博客等缓存,通过中间件实现全站缓存。

    加缓存中间件,那么多中间件加在什么位置?

    请求时:缓存加在中间件里的最后一个,比如一次经过1、2、3、4中间件,加在4

    返回事:缓存加在中间件里的第一个,如上返回依次经过4、3、2、1,加在1

    django 中,导入模块,可以实现。

    # 使用中间件,经过一系列的认证等操作,
    # 如果内容在缓存中存在,则使用FetchFromCacheMiddleware获取内容并返回给用户,
    # 当返回给用户之前,判断缓存中是否已经存在,
    # 如果不存在则UpdateCacheMiddleware会将缓存保存至缓存,从而实现全站缓存
        MIDDLEWARE = [
            'django.middleware.cache.UpdateCacheMiddleware',  # 只有process_response
            # 其他中间件...
            'django.middleware.cache.FetchFromCacheMiddleware',  # 只有process_view
        ]
    
        CACHE_MIDDLEWARE_ALIAS = ""
        CACHE_MIDDLEWARE_SECONDS = ""
        CACHE_MIDDLEWARE_KEY_PREFIX = ""

    2.2 应用多个缓存时生效的优先级

    另外:session引擎缓存配置,就是放在这里的缓存里。

    如果同时应用了两个级别的缓存,比如views缓存和模板局部缓存,哪个生效?

    哪个生效,和请求的声明周期的有关系的

    所以最先生效的是全站、之后views、最后模板局部缓存。

    django-redis的应用

    # =================django-redis============

    settings.py配置cache

    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}     #最大连接数,redis开启连接池pool
      # "PASSWORD": "密码",   #redis默认没有密码
      }}
      }

    视图函数中使用
      from django_redis import get_redis_connection   conn = get_redis_connection("default")

    缓存session(通过redis/memcache之类)
      配置 settings.py
        SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  # 启用cache引擎
        SESSION_CACHE_ALIAS = 'default'                            # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
     
        SESSION_COOKIE_NAME = "sessionid"                        # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串
        SESSION_COOKIE_PATH = "/"                                # Session的cookie保存的路径
        SESSION_COOKIE_DOMAIN = None                              # Session的cookie保存的域名
        SESSION_COOKIE_SECURE = False                             # 是否Https传输cookie
        SESSION_COOKIE_HTTPONLY = True                            # 是否Session的cookie只支持http传输
        SESSION_COOKIE_AGE = 1209600                              # Session的cookie失效日期(2周)
        SESSION_EXPIRE_AT_BROWSER_CLOSE = False                   # 是否关闭浏览器使得Session过期
        SESSION_SAVE_EVERY_REQUEST = False                        # 是否每次请求都保存Session,默认修改之后才保存
     
     
    通过django的内置模块,连接缓存
    from django.core.cache import cache
    cache.has_key('name')#判断是否有key等于name
    cache.set(key,value,timeout='过期时间') timeout可选参数
    cache.get(key)
  • 相关阅读:
    01-2制作U盘启动盘--装机助理工具
    01-1制作U盘启动盘--大白菜超级U盘启动盘制作工具
    计算机操作系统
    设置电脑系统密码以及桌面密码
    bios文字解释
    Word基本文档字体设置
    Ctrl/Alt 快捷键
    Windows键
    Laravel 5.2 四、.env 文件与模型操作
    Laravel 5.2 三、中间件、视图与 Blade 模板引擎
  • 原文地址:https://www.cnblogs.com/qlshao/p/8715842.html
Copyright © 2011-2022 走看看