Django 中内置了一套缓存机制,通过将数据保存在IO性能较高的缓存上,可以提高网站的访问速度。Django 内置的缓存框架提供了以下几种常用的缓存:
- 基于
Memcached
缓存; - 使用数据库进行缓存;
- 使用文件系统进行缓存;
- 使用本地内存进行缓存;
一、配置缓存
- 创建缓存表:
python manage.py createcachetable [table_name]
- 在
settings.py
中做好配置:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_cache_table', # 缓存数据表
'TIMEOUT': '60', # 设置缓存中数据的过期时间
'OPTIONS': {
'MAX_ENTRIES': '300', # 设置最大的数据条目
},
'KEY_PREFIX':'wjiaman', # 前置字符串
}
}
在CACHES
中除了default
还可以配置多个缓存。
二、缓存的使用
缓存的常见用法有两种:
1. 装饰器
对相应的视图函数使用装饰器@cache_page()
,Django就会对该视图需返回的数据进行缓存,@cache_page()
的配置参数有:
time
:以秒为单位设置过期时间;cache
:使用settings.py
中配置好的哪个缓存,默认为default
;key_prefix
:指定前置字符串
2. 代码操作
也可以在底层通过代码操作缓存,若无特殊要求一般不推荐使用。
- 获取缓存对象:
from django.core.cache import caches
cache = caches['cache_name']
其中
cache_name
为settings.py
中配置好的缓存。
- 缓存操作:
- cache.set
- key
- value
- timeout
- get(默认存入缓存的键名为对应的视图函数名)
- add
- get_or_set
- set_many
- get_many
- delete
- delete_many
- clear
- incr(key,value=1)
- decr(key,value=1)
三、使用Redis做缓存
Redis的常见实现有两个:
- django-redis
- django-redis-cache
使用时的配置与内置的缓存配置基本一致:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
用法也与内置缓存使用一样。