Django2 缓存功能实现

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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值