24Django装饰器整体缓存的一种玩法

技术24Django装饰器整体缓存的一种玩法 24Django装饰器整体缓存的一种玩法一,Django设置缓存的三种类型:#将数据缓存到表里
CACHE={'default':{'BACKEND':'d

一种播放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

(0)

相关推荐

  • 一什么狗尾草,狗尾巴草有什么象征意义吗

    技术一什么狗尾草,狗尾巴草有什么象征意义吗象征不被人了解的爱,但却可以为她默默付出……默默的爱一个人,默默的看他(她),默默的为他(她),默默的为他(她)做着一切,但仅仅只是默默,无声无息的爱犹如狗尾巴草,狗尾巴草的爱情

    生活 2021年10月22日
  • 如何使用JDBC连接MySQL 8.x

    技术如何使用JDBC连接MySQL 8.x这篇文章给大家分享的是有关如何使用JDBC连接MySQL 8.x的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MySQL 8.x 新版本JDBC连接方

    攻略 2021年11月1日
  • Hive数据如何导入导出mysql

    技术Hive数据如何导入导出mysql这篇文章给大家分享的是有关Hive数据如何导入导出mysql的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hive定位:ETL(数据仓库)工具将数据从来源

    攻略 2021年12月10日
  • vue中router-view组件怎么用

    技术vue中router-view组件怎么用这篇文章主要介绍了vue中router-view组件怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在开发

    攻略 2021年10月25日
  • 秦朝多少年历史,秦朝建立到灭亡多长时间

    技术秦朝多少年历史,秦朝建立到灭亡多长时间秦朝(公元前221年-公元前207年) ,是由战国后期的秦国发展起来的中国历史上第一个大一统王朝,传三世,共两帝一王,国祚共十四年秦朝多少年历史。秦国原为周朝的一个诸侯国,到秦始

    生活 2021年10月30日
  • 怎么理解MySQL 5.7中的Generated Column

    技术怎么理解MySQL 5.7中的Generated Column这期内容当中小编将会给大家带来有关怎么理解MySQL 5.7中的Generated Column,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文

    攻略 2021年11月20日