当前分类:python>>正文

django数据库缓存的设置和使用

来源:互联网   时间:2022年8月12日   编辑

有朋友想问,django获取数据本来就是直接从数据库中查找结果,你再弄一个数据库缓存有什么用?

二者是有区别的,直接查询数据库,是查询所有内容,内容多了后,速度自然会慢很多。

而数据库缓存,里面则是存储的查询结果,而且只存一部分,当用户再次来访问的时候,直接提供结果,这样会让网站的响应速度提升很多,尤其是数据上了10万条以后,速度提升非常明显。

django这个框架提供了好多种缓存方案,我们这里,只使用数据库缓存这一种。

先说一下配置

一、数据库缓存配置

在settings.py文件中先添加如下代码

​​​​​​​CACHES = {
            'default': {
                'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
                'LOCATION': 'my_cache_table', # 数据库表
            }
        }

这里还可以自定义缓存超时时间以及最大缓存数量,还有就是达到最大缓存量后自动删除多少等。

我们这里使用默认的就行,最大缓存数据300条,超限后删除三分之一!

二、创建缓存数据库表

执行下面的命令

python manage.py createcachetable

有没有创建成功,最好自己进入数据库中查看一下,因为你在使用这个命令创建的时候,成功也没有什么提示。

三、缓存使用

我们这里主要使用视图缓存,有需要的地方才缓存一下,不需要的地方,我就不缓存。

我来举个例子,我想缓存一下网站首页的内容

那么,我找到首页对应的视图函数

首先引入一个模块

from django.views.decorators.cache import cache_page

然后,使用下面装饰器

@cache_page(60 * 15)

参数是缓存时间,单位是秒。60*15则表示缓存15分钟

我想缓存首页视图,如下:

加上上面红框的这一条就行了。

想缓存哪就在哪条视图函数前面使用哦。

这个装饰器,还可以在路由文件urls.py中使用,要对哪条视图使用,直接在某条路由对应的函数前面使用,如下

这个就是缓存10秒时间。

怎么样使用起来还是比较简单吧?、

按上面的步骤,试一下吧?如果没搞定,准备好红包,联系我!

 

[猜你喜欢]

标签: django 缓存