缓存框架的核心目标:
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 名字