Django中的缓存(内存,文件,redis)
一、Django中的缓存的几种方法
1)单个视图缓存。时间测试
import time
from django.views.decorators.cache import cache_page
@cache_page() # 缓存5秒
def test_time(request):
ctime=time.time()
return HttpResponse(ctime)
在5秒内访问的时间不变,该缓存到了内存里面
2)设置全局缓存
需要在settings添加中间件
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware’, #第一 ,重写了response的方法
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware', #最后,重写了request的方法
)
“update” 必须配置在第一个
“fetch” 必须配置在最后一个
配置缓存时间:CACHE_MIDDLEWARE_SECONDS=10
settings的示例
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware', #响应HttpResponse中设置几个headers
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware', #用来缓存通过GET和HEAD方法获取的状态码为200的响应 ) CACHE_MIDDLEWARE_SECONDS=
setting.py
视图函数编写(缓存所有视图有效)
import time
def test_time(request):
ctime=time.time()
return HttpResponse(ctime)
3)模板层中的缓存。只缓存需要的内容。(关闭全局缓存)
html的编写
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="/static/jquery-3.3.1.js"></script>
<title>Title</title>
</head>
<body>
{% load cache %} 当前时间:{{ ctime }}
<hr> {% cache 'time'%}
应用缓存:{{ ctime }}
{% endcache %} </body> </html>
test.html
视图编写
import time
def test_time(request):
ctime=time.time()
return render(request,'test.html',locals())
4)文件中的缓存。settings配置
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', #指定缓存使用的引擎
'LOCATION': '/var/tmp/django_cache', #指定缓存的路径
'TIMEOUT':, #缓存超时时间(默认为300秒,None表示永不过期)
'OPTIONS':{
'MAX_ENTRIES': , # 最大缓存记录的数量(默认300)
'CULL_FREQUENCY': , # 缓存到达最大个数之后,剔除缓存个数的比例,即:/CULL_FREQUENCY(默认3)
}
}
}
CACBES
视图编写
import time
from django.views.decorators.cache import cache_page
@cache_page()
def test_time(request):
ctime=time.time()
return HttpResponse(ctime)
访问会在配置的路径下生成缓存文件
5)缓存到redis中。
5.1)安装 pip3 install django-redis
5.2)setting.py里面进行配置
# redis配置
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": } # 连接池
# "PASSWORD": "",
}
}
}
Django中的缓存(内存,文件,redis)的更多相关文章
- django中的缓存以及跨域
django中的缓存 先来了解以下问题
- Django 中的缓存问题
Django 中的缓存问题 简单介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的 ...
- Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)
一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...
- Django中的缓存基础知识
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...
- django中的缓存 跨域问题(同源策略)
django缓存机制 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作 ...
- django中的缓存
对于一个动态网站来说,用户的每次访问都意味着对服务器的一次开销,当该服务器的并发访问非常大时,对于一个动态网站来说,开销会非常的大.所以对于大中型web应用来说,减轻服务器的性能瓶颈就很有必要 对于d ...
- Django中使用缓存
settings中的配置 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache ...
- Django中的缓存机制
概述 对于中等流量网站来说,尽可能的减少开销是必要的.缓存数据就是为了保存那些需要很多计算资源大的结果,这样的的话就不必在下次重复消耗计算资源. Django自带了一个健壮的缓存系 ...
- Django中使用静态资源/文件
Django中常需要引用js,css,小图像文件,一般我们把这一类文件称为静态文件,放置在static文件夹中,接下来,对Django中配置静态文件进行下傻瓜式的步骤介绍 在工程目录下新建static ...
随机推荐
- 学习 MeteoInfo二次开发教程(三)
1.breakList的问题 ((PolygonBreak) aLS.breakList[0]).DrawFill=false; 新的类库将LegendScheme的breakList属性改为了Leg ...
- 实验三:xen环境下的第一个虚拟机的安装
实验名称: xen环境下的第一个虚拟机的安装 实验环境: 我们这里继续上面实验二来完成这个实验: 环境则是xen的安装环境,如下图: 开启虚拟机的的硬件辅助虚拟化功能: 实验要求: 这里我们通过安装b ...
- java多线程—Runnable、Thread、Callable区别
多线程编程优点 进程之间不能共享内存,但线程之间共享内存非常容易. 系统创建线程所分配的资源相对创建进程而言,代价非常小. Java中实现多线程有3种方法: 继承Thread类 实现Runnable接 ...
- day37协程与线程套接字通讯
协程与线程套接字通讯基于多线程实现套接字服务端支持并发,服务端 from socket import * from threading import Thread def comunicate(con ...
- [Unity优化]UI优化(二):Mask组件分析
参考链接: https://www.sohu.com/a/211665096_99940808 1.Mask组件实现原理 使用模板测试,一方面使Mask对象所在区域的模板缓冲值置为1,另一方面使被Ma ...
- Maven私服(Nexus)启动创建Windows服务
sc create lutao-maven-nexus binpath= D:\maven-server\nexus--\bin\nexus.exe type= own start= auto dis ...
- 一个linux bbr存在的调用顺序bug
最近跟踪bbr的状态转换的代码,发现一个问题: [,min_rtt_us=,full_bw=,cycle_idx=,pacing_gain=,cwnd_gain=,rtt_cnt= [,min_rtt ...
- Sql Server数据库之约束
一.约束的分类 实体约束:关于行的约束,比如某一行出现的值就不允许别的行出现,如主键 域约束:关于列的约束,对表中所有行的某些列进行约束,如check约束 参照完整性约束:如果某列的值必须与其他列的值 ...
- java遍历实体类的属性和值
代码如下: 实体类: public class User implements Serializable { private static final long serialVersionUID = ...
- Could not find a package configuration file provided by "Sophus",SophusConfig.cmake
CMake Error at CMakeLists.txt:5 (find_package): By not providing "FindSophus.cmake" in CMA ...