有朋友想问,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秒时间。
怎么样使用起来还是比较简单吧?、
按上面的步骤,试一下吧?如果没搞定,准备好红包,联系我!
标签: