一种播放24Django装饰器整个缓存的方法
首先,Django设置了三种类型的缓存:
#将数据缓存到表中
CACHE={ 0
默认' :{
后端' : ' django . core . cache . backs . db . database cache ',#数据库缓存引擎
位置' :' my _ cache _ table ',#声明缓存存储在哪个表中!
超时' :300,#缓存存储时间单位秒,默认为300秒。
OPTIONS':{
MAX_ENTRIES':300,#缓存中数据的最大数量
CULL_FREQUENCY':2,#当缓存数量达到最大值时,删除1/2的缓存数据。
}
}
}
#数据缓存在内存中
CACHES={
默认' :{
后端' : ' django . core . cache . back ends . locmem . locmemcache ',
位置' :'/var/tmp/django _ cache ',#此时文件夹的路径。
位置' : '唯一-雪花'
}
}
#将缓存数据存储在本地文件中
CACHE={
默认' :{
后端' : ' django . core . cache . back ends . file based . filebasedcache '
}
}
二、整体缓存的两种方法:
方法1:
直接配置一个路由,然后抛出需要缓存的视图函数。场景示例:突然有人告诉你xxx视图慢,可以直接配置一个路由,然后把视图扔进去,任务就完成了,比较省心。
#整体缓存写入1:
来自django . views . decorators . cache import cache _ page
urlpatterns=[
路径(' foo/',cache_page(30)(my_view))
]
方法2:
在需要缓存的视图中使用装饰器,例如:
#整体缓存写入2:
来自django . views . decorators . cache import cache _ page
@cache_page(30) #单位秒
def my_view(请求):
.
三、如何避免程序查询数据速度慢的问题
答:在内存中放一个临时数据样本,避免使用复杂的sql语句进行查询。如果您可以在视图中使用大量缓存,数据处理成本将大大降低。
第四,缓存应用场景:
数据变化不太频繁的数据,如博客列表页面、电商产品页面等。
例5:
1创建一个项目并用pycharm打开它。
#找到dajngo-admin的位置:
C: \用户\ 66907 \ AppData \漫游\ Python \ Python310 \站点包\django\bin
#添加环境变量
计算机-属性-高级系统设置-环境变量-路径-编辑-新建-粘贴上面的网址
#创建项目
C: \用户\66907d:
D:\cd PycharmProjects
d : \ pycharmsproject sDjango-admin . py start project my site 7
2创建数据库:
d : \ PycharmProjectsmysql-uroot-p 123456
mysql创建数据库mysite7默认字符集utf8
3在设置中配置数据库。复制:
数据库={ 0
默认' : {
ENGINE ' : ' django . db . back ends . MySQL ',
名称' : '我网站7 ',
用户' : '根',
PASSWORD': '123456 ',
主机' : '127.0.0.1 ',
端口' : '3306 '
}
}
4在设置中的空白处配置数据库缓存:
#将数据缓存到表中
CACHES={
默认' :{
后端' : ' django . core . cache . backs . db . database cache ',#数据库缓存引擎
位置' :' my _ cache _ table ',#声明缓存存储在哪个表中!
超时' :300,#缓存存储时间单位秒,默认为300秒。
OPTIONS':{
MAX_ENTRIES':300,#缓存中数据的最大数量
CULL_FREQUENCY':2,#当缓存数量达到最大值时,删除1/2的缓存数据。
}
}
}
5手动创建缓存配置中定义的表my_cache_table:
d : \ pycharmPROJECts \ my site 7 python manage . py create cachetable
6将django自己的表初始化到数据库。
d : \ pycharmPROJECts \ my site 7 python manage . py迁移
7在mysite7目录中创建一个同名的views.py。
my site 7d : \ pycharmPROJECts \ my site 7
mysite7
__init__。巴拉圭
asgi.py
settings.py
urls.py
views.py
wsgi.py
管理. py
编写一个视图函数,并将时间戳输出到浏览器。如果用户来了又去了缓存,时间戳应该是一个旧值。如果用户不去缓存,用户应该得到一个新的值。我们可以通过观察这个变化来判断缓存是否有效!
来自django.http导入HttpResponse
来自姜戈。观点。装修工人。缓存导入缓存页面
导入时间
@cache_page(15)
def测试_缓存(请求):
t=time.time()
返回httpresponse(' t是%s'%(t))
9配置路由:
来自django.contrib导入管理
从django.urls导入路径
来自。导入视图
urlpatterns=[
路径(' admin/',admin。网站。网址),
路径(“test_cache”,views.test _ cache),
]
10浏览器访问测试:http://127 .0 .0 .1:8000/test _ cache
你可以不停的刷新浏览器,但是浏览器里的时间没有任何变化,直到15秒后才会变化,此时说明缓存生效了
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/135155.html