Django中的缓存的配置与使用
一、使用装饰器
在文件开头导入下面代码,然后在函数上方添加缓存的装饰器
from django.views.decorators.cache import cache_page
一:在视图View中使用 cache_page 【整个视图缓存】
@cache_page(30)
def my_view(request)
二:在路由URLConf中使用 cache_page
urlpatterns = [path('/path, cache_page(60)(my_view)')]
# 方式一:使用caches['CACHES配置key'] 导入具体对象
from django.core.cache import caches
cache1 = caches['user']
cache2 = caches['pwd'] # 方式二:相当于直接引入CACHES配置项中的'default'项
from django.core.cache import cache
cache.set(key,value,timeout) 存储缓存
key:缓存的key
value:Python对象
timeout:缓存存储的时间(s),默认为CACHES中的TIMEOUT值 cache.get(key) 取缓存,没有数据返回None
key:缓存的key cache.add(key,value) 存储缓存,只要可以不在时生效返回值是Bool cache.get_or_set(key,value,timeout) 如果未获取到数据,则执行set操作 cache.set_many(dict,timout) 批量存储数据
dict:key和value的字典
timout:存储时间
返回值:插入不成功的key的数组 cache.delete(key) 删除key的缓存数据,返回值None cache.delete_many(key_list) 批量删除,返回值None
二、原生缓存
redis缓存
首先要安装django-redis
pip install django-redis
配置 settings.py django项目的缓存配置 CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache", # 引擎
# redis服务器的ip地址及端口号,及数据库序号,redis一共有15个数据库 0~15
"LOCATION": "redis://127.0.0.1:6379/1",
# "LOCATION": "redis://:passwordpassword@47.193.146.xxx:6379/0", # 如果redis设置密码的话,需要以这种格式进行设置,host前面是密码
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient"
}
}
}
数据库缓存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache', # 引擎
'LOCATION': 'my_cache_table', # 数据库表名(名字是自己取的)
'TIMEOUT': 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
'OPTIONS':{
'MAX_ENTRIES': 300, # 最大缓存个数(默认300)
'CULL_FREQUENCY': 3, # 缓存条数到达最大值时,删除1/X的缓存数据
},
}
}
本地内存缓存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake', #这个参数指定变量名必须唯一
}
}
文件缓存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': r'c/xxx', #缓存内容存放的文件夹路径
}
}
开发调试缓存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 引擎
#注: 下面这些参数时公用的,五种缓存都可以使用
'TIMEOUT': 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
'OPTIONS':{
'MAX_ENTRIES': 300, # 最大缓存个数(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例(3就是1/3)
},
}
}
Django中的缓存的配置与使用的更多相关文章
- Django中的缓存(内存,文件,redis)
一.Django中的缓存的几种方法 1)单个视图缓存.时间测试 import time from django.views.decorators.cache import cache_page @ca ...
- Django 中的缓存问题
Django 中的缓存问题 简单介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的 ...
- Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)
一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...
- django中的缓存以及跨域
django中的缓存 先来了解以下问题
- Django中的缓存基础知识
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...
- django中的缓存
对于一个动态网站来说,用户的每次访问都意味着对服务器的一次开销,当该服务器的并发访问非常大时,对于一个动态网站来说,开销会非常的大.所以对于大中型web应用来说,减轻服务器的性能瓶颈就很有必要 对于d ...
- django中的setting最佳配置小结
Django settings详解 1.基础 DJANGO_SETTING_MODULE环境变量:让settings模块被包含到python可以找到的目录下,开发情况下不需要,我们通常会在当前文件夹运 ...
- Django中使用缓存
settings中的配置 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache ...
- django中的缓存 跨域问题(同源策略)
django缓存机制 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作 ...
- 测试开发之Django——No4.Django中前端框架的配置与添加
我们在开发一个web项目的时候,虽然我们不是专业开发,但是我们也想要做出来一个美美的前端页面. 这种时候,百度上铺天盖地的前端框架就是我们的最好选择了. 当然,在网上直接下载的框架,我们是不能直接用的 ...
随机推荐
- Linux安装Nginx安装并配置stream
编译安装 1.下载可编译的nginx cd /opt wget http://nginx.org/download/nginx-1.20.1.tar.gz tar -zxvf nginx-1.20.1 ...
- du命令_Linux du命令:查看文件夹和文件的磁盘占用情况
du 命令,全称是 disk usage,用来展示磁盘使用量的统计信息. du 和 df 算是一对同门师兄弟,du 侧重在文件夹和文件的磁盘占用方面,而 df 则侧重在文件系统级别的磁盘占用方面.这两 ...
- Vue2 中keyup.enter触发问题!
结合Element-UI开发的过程需求需要添加表单的默认Enter事件,但是当文本框或者元素没有获取焦点的时候回车事件未触发: 存在元素输入框修改语句:@keyup.native.enter 如果是f ...
- SQL server自动创建日历表。
做日报功能需要统计每个月的上班天数,节假日因为每年的日期都不一样,所以需要自己手动更新这些节假日 1:首先先自动创建一个日历表,选择开始年月日和结束的年月日 不要同时执行,先执行创建表之后CREATE ...
- Selenium私房菜系列9 -- Selenium RC服务器命令行参数列表【VV】
使用示例: java -jar selenium-server.jar [-interactive] [options] -port <nnnn>: selenium服务器使用的端口号(默 ...
- 设置NTP校时
设置NTP校时-作为客户端 @echo off rem 以管理员身份执行文件 rem 适用于域控PDC主机,对于未加域的计算机可直接使用Internet时间同步 rem 获取管理员权限 %1 msht ...
- C# List间的交集并集差集
一.简单类型List的交集并集差集 1.先定义两个简单类型的List List<int> listA = new List<int>() { 1, 2, 3, 4, 5, 6, ...
- ansible笔记第二章(ansible-varable变量)
(1)变量类型 1.1在playbook文件中的play使用变量 [root@m01 project1]# cat vars_1.yml - hosts: oldboy vars: - web_p ...
- 日常开发记录-this.$message,this.$prompt,交换弹窗确定和取消按钮的位置,确定在左,取消在右
代码: <template> <el-button type="text" @click="open">点击打开 Message Box ...
- Android Studio 修改jar包中的.class代码
修改a.jar中的b.class文件: 1.在Android Studio的项目中引入a.jar,sync,通过反编译找到并拷贝b.java的代码 2.使用压缩软件打开a.jar,并删掉需要修改的文件 ...