Django web 网站基础搭建补充——数据库缓存的使用

针对Django中的缓存,官方给出了六种缓存方式,分别是:

Memcached数据库缓存文件系统缓存本地内存缓存虚拟缓存(用于开发模式)自定义缓存。


缓存参数

Django 可以在数据库中存储缓存数据。如果你有一个快速、索引正常的数据库服务器,这种缓存效果最好。每个缓存后端可以通过额外的参数来控制缓存行为。这些参数在 CACHES 配置中作为附加键提供。有效参数如下:

        TIMEOUT :缓存的默认超时时间,以秒为单位。这个参数默认为 300 秒(5 分钟)。你可以将 TIMEOUT 设置为 None,这样,默认情况下,缓存键永远不会过期。值为 0 会导致键立即过期(实际上是 “不缓存”)。

        OPTIONS :任何应该传递给缓存后端的选项。有效的选项列表会随着每个后端而变化,由第三方库支持的缓存后端会直接将其选项传递给底层缓存库。

实施自有缓存策略的缓存后端(即 locmem、filesystem 和 database 后端)将尊重以下选项:

        MAX_ENTRIES :删除旧值之前允许缓存的最大条目。默认是 300 。

        CULL_FREQUENCY :当达到 MAX_ENTRIES 时,被删除的条目的比例。实际比例是 1 / CULL_FREQUENCY,所以将 CULL_FREQUENCY 设置为 2,即当达到 MAX_ENTRIES 时将删除一半的条目。这个参数应该是一个整数,默认为 3。

Memcached 后端将 OPTIONS 的内容作为关键字参数传递给客户端构造函数,允许对客户端行为进行更高级的控制:

        KEY_PREFIX。一个自动包含在 Django 服务器使用的所有缓存键中的字符串(默认为前缀)。

        VERSION :Django 服务器生成的缓存键的默认版本号。

        KEY_FUNCTION 一个字符串,包含一个函数的点分隔路径,该函数定义了如何将前缀、版本和键组成一个最终的缓存键。

 说明来自官方文档:  https://docs.djangoproject.com/zh-hans/3.2/topics/cache/ 


接下来进入正文部分:

        基于windows系统,我在之前的操作中对网页进行了美化,随之而来的是数据加载量大幅增加,而我在对代码进行修改时会同步关注网页的变化(实时刷新),响应速度慢使人苦不堪言。

        针对此项,我采用的是数据库缓存,效果确实还行。

首先是编辑  settings.py  文件,在其中加入:

"""
mysite/settings.py
"""


···
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',    # 缓存方式
        'LOCATION': 'login_cache',            # 表名称
        'TIMEOUT': 60,                        # 单位是秒,超时后缓存失效
        'OPTIONS': {
            'MAX_ENTRIES': 1000               # 缓存数据上限
        }
    }
}
···

以及在settings中的  MIDDLEWARE  的首位分别加入两行代码:

"""
mysite/settings.py
"""


···
MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    ···
    'django.middleware.cache.FetchFromCacheMiddleware',
]
···

最后在views.py中添加:

"""
mysite/views.py
"""


···
from django.views.decorators.cache import cache_page
···

···
@cache_page(60 * 1)        
#在你要缓存的视图函数前添加此装饰器,括号里的参数单位是秒,效果等同于TIMEOUT
def index(request):
    ···

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sthons

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值