1)较少的代码: 缓存应该尽可能快, 因此围绕缓存后的所有框架代码应该保持在绝对最小值, 特别是对于获取操作
2)一致性: 缓存API应该是提供跨越不同缓存后端的一致接口
3)可扩展性: 基于开发人员的需求, 缓存API应该可以在应用程序级别扩展
Django内置了缓存框架, 并提供了几种常用的缓存
1)基于Memcached缓存
2)使用数据库进行缓存
3)使用文件系统进行缓存
4)使用本地内存进行缓存
5)提供缓存扩展接口
缓存配置:
1,创建缓存表
./manage.py createcachetable [name]
2,缓存配置:
1) 系统缓存配置:
# 作为 cache backend 使用配置 使用redis保存session
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/9",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
"KEY_PREFIX": "rock",
"VERSION": "1",
}
}
2) Redis 缓存配置:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/9",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
两个的使用方法是一样的, 直接加一个装饰器 @cache_page(timeout=10)
@cache_page(timeout=10)
def news(request):
news_list = []
for i in range(10):
news_list.append(‘最近贸易战又开始了%d‘ % i)
sleep(15)
return render(request, ‘goods/news.html‘, {‘news_list‘: news_list})
若是多缓存,那么配置的时候:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/9",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
"KEY_PREFIX": "rock",
"VERSION": "1",
},
"redis_backend": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/9",
"OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", }
}
}
使用的时候 @cache_page(timeout=10, cache=‘redis_backend‘) # 可以指定缓存cache 名字
原文:https://www.cnblogs.com/wangyue0925/p/11347465.html