Django2 缓存功能实现分析

符号 阅读:178 2021-03-31 18:17:03 评论:0

Django2 支持缓存种类:

缓存服务器:Memcached

数据库缓存:MySQL 存储缓存信息

文件系统缓存:本地文件存储缓存信息

基于本地缓存:基于本机的内存缓存信息

开发缓存:Django专门针对开发提供的缓存信息

 

第一:Django 集成Memcached 实现缓存功能

1、windows 安装memcached 缓存服务器,请自行百度windows 安装memcached

2、python 安装memcached 第三方类库:pip install python-memcached

3、项目(blogsite)的setting.py 配置文件新增配置缓存相关信息代码如下:

# 设置缓存 
CACHES = { 
    'default': { 
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 
        'LOCATION': '127.0.0.1:11211', 
        'OPTIONS': { 
            'server_max_value_length': 1024 * 1024 * 2, 
        } 
    } 
}

第二:Django 集成MySQL实现缓存功能

1、项目(blogsite)的setting.py 配置文件新增配置缓存相关信息代码如下:

CACHES = { 
    'default': { 
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 
        'LOCATION': 'my_cache_table', 
    } 
}

第三:Django 集成文件实现缓存功能

1、项目(blogsite)的setting.py 配置文件新增配置缓存相关信息代码如下:

CACHES = { 
    'default': { 
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 
        'LOCATION': 'c:/foo/bar', 
    } 
}

第四:Django 集成本地内存实现缓存功能

1、项目(blogsite)的setting.py 配置文件新增配置缓存相关信息代码如下:

CACHES = { 
    'default': { 
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 
        'LOCATION': 'unique-snowflake', 
    } 
}

第五:Django 开启开发缓存功能

1、项目(blogsite)的setting.py 配置文件新增配置缓存相关信息代码如下:

CACHES = { 
    'default': { 
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache', 
    } 
}

缓存参数类型说明:

  • TIMEOUT:缓存过期时间,默认时间为(秒)
  • OPTIONS:缓存的可选参数
  • KEY_PREFIX:缓存前缀
  • VERSION:缓存版本
  • KEY_FUNCTION:缓存密钥

 

缓存用途:

1、全站缓存

第一步:将'django.middleware.cache.UpdateCacheMiddleware'和'django.middleware.cache.FetchFromCacheMiddleware'添加到MIDDLEWARE设置中。

配置如下:

MIDDLEWARE = [ 
    'django.middleware.cache.UpdateCacheMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.cache.FetchFromCacheMiddleware', 
]

注意: update中间件必须放在列表的开始位置,而fectch中间件,必须放在最后。 这是Django使用中间件的规则,它们是有顺序关系的。

第二步:添加下面这些需要的参数到settings文件里:

CACHE_MIDDLEWARE_ALIAS : 用于存储的缓存的别名 
CACHE_MIDDLEWARE_SECONDS : 每个page需要被缓存多少秒. 
CACHE_MIDDLEWARE_KEY_PREFIX : 密钥前缀

2、缓存视图

django.views.decorators.cache定义了一个自动缓存视图响应结果的装饰器cache_page,示例如下:

# json 序列化 
@cache_page(60 * 15) 
def json(request): 
    book_list = Books.objects.all() 
    logger.info('这是一个日志') 
    print('数据库查询') 
    return JSONUtil.render_json(book_list, safe=False)

 

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
关注我们

一个IT知识分享的公众号