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)

相关推荐

  • rt-thread操作系统分配内存失败(rt-thread支持什么内存管理)

    技术RT-Thread内存管理是怎么进行的本篇文章为大家展示了RT-Thread内存管理是怎么进行的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在单片机芯片上,如果不考虑出厂固

    攻略 2021年12月17日
  • java环形队列如何控制循环时间(java并发如何判断阻塞队列已满)

    技术Java阻塞队列BlockingQueue怎么实现这篇文章主要讲解了“Java阻塞队列BlockingQueue怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“

    攻略 2021年12月21日
  • 提升Azure App Service的几个建议分别是什么

    技术提升Azure App Service的几个建议分别是什么这篇文章将为大家详细讲解有关提升Azure App Service的几个建议分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后

    攻略 2021年11月18日
  • 《Unix/Linux系统编程》第六章学习笔记

    技术《Unix/Linux系统编程》第六章学习笔记 《Unix/Linux系统编程》第六章学习笔记信号和信号处理
    摘要
    本章讲述了信号和信号处理;介绍了信号和中断的统一处理,有助于从正确的角度看待信号;

    礼包 2021年11月13日
  • 隐藏IP地址有哪些好处

    技术隐藏IP地址有哪些好处本篇内容主要讲解“隐藏IP地址有哪些好处”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“隐藏IP地址有哪些好处”吧!  1、隐藏位置信息  隐藏您的I

    攻略 2021年11月19日
  • vue-countTo --

    技术vue-countTo -- vue-countTo --- 数字滚动插件vue-countTo是一个无依赖,轻量级的vue组件,可以自行覆盖easingFn。
    你可以设置startVal和endV

    礼包 2021年12月13日