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