针对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):
···