Django-缓存

缓存框架的核心目标:

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