Django缓存实战
学习在Django中配置和使用缓存系统,提升网站响应速度。 · 难度:入门 · +15XP
缓存概述
缓存是一种将耗时计算结果或频繁访问的数据存储在快速介质中的技术,从而避免重复计算或数据库查询。Django内置了强大的缓存框架,支持多种后端:内存缓存(如Memcached、Redis)、文件缓存、数据库缓存等。
缓存设置
在settings.py中配置CACHES字典。以下示例使用本地内存缓存(适合开发环境):
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake',
}
}生产环境推荐使用Redis:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
}
}缓存粒度
| 粒度 | 方法 | 适用场景 |
|---|---|---|
| 全站缓存 | 中间件 | 静态网站或几乎不变的内容 |
| 视图缓存 | @cache_page装饰器 | 单个视图结果 |
| 模板片段缓存 | {% cache %}标签 | 模板中部分内容 |
| 低级别缓存 | cache.set/get | 任意数据 |
示例:视图缓存
from django.views.decorators.cache import cache_page
@cache_page(60 * 15) # 缓存15分钟
def my_view(request):
# 耗时操作
return render(request, 'template.html')低级别缓存操作
from django.core.cache import cache
# 设置缓存,过期时间300秒
cache.set('my_key', 'my_value', 300)
# 获取缓存
value = cache.get('my_key')
# 删除缓存
cache.delete('my_key')练习提示: 修改starter_code中的视图,添加@cache_page装饰器,并设置缓存时间为60秒。刷新页面两次,观察第二次响应速度是否提高。