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)

相关推荐

  • Vue 登录Id的传值+ 购物车的结算

    技术Vue 登录Id的传值+ 购物车的结算 Vue 登录Id的传值+ 购物车的结算一、登录Id的传值1、传值if (res.data.code !="") {this.$message({message

    礼包 2021年10月28日
  • mysql服务启动后该怎么操作(怎么用命令开启mysql以及运行结果)

    技术MySQL启动和关闭的方法是什么这篇文章主要介绍“MySQL启动和关闭的方法是什么”,在日常操作中,相信很多人在MySQL启动和关闭的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家

    攻略 2021年12月23日
  • Hibernate如何连接配置

    技术Hibernate如何连接配置小编给大家分享一下Hibernate如何连接配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Hibern

    攻略 2021年12月8日
  • 怎样处理Java程序中的内存漏洞

    技术怎样处理Java程序中的内存漏洞本篇文章为大家展示了怎样处理Java程序中的内存漏洞,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 Java 程序中也有内存漏洞?当然有。与流

    攻略 2021年12月2日
  • 如何理解分布式系统下基于Redis的分布式锁

    技术如何理解分布式系统下基于Redis的分布式锁这篇文章主要介绍“如何理解分布式系统下基于Redis的分布式锁”,在日常操作中,相信很多人在如何理解分布式系统下基于Redis的分布式锁问题上存在疑惑,小编查阅了各式资料,

    攻略 2021年10月29日
  • jmeter压力测试报错:java.net.BindException: Address already in use: connect

    技术jmeter压力测试报错:java.net.BindException: Address already in use: connect jmeter压力测试报错:java.net.BindExce

    礼包 2021年12月23日