「Django」利用缓存提高性能

 Django 中内置了一套缓存机制,通过将数据保存在IO性能较高的缓存上,可以提高网站的访问速度。Django 内置的缓存框架提供了以下几种常用的缓存:

  • 基于Memcached缓存;
  • 使用数据库进行缓存;
  • 使用文件系统进行缓存;
  • 使用本地内存进行缓存;

一、配置缓存

  1. 创建缓存表:
python manage.py createcachetable [table_name]
  1. 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()的配置参数有:

  1. time:以秒为单位设置过期时间;
  2. cache:使用settings.py中配置好的哪个缓存,默认为default
  3. key_prefix:指定前置字符串
2. 代码操作

 也可以在底层通过代码操作缓存,若无特殊要求一般不推荐使用。

  1. 获取缓存对象:
from django.core.cache import caches
cache = caches['cache_name']

其中cache_namesettings.py中配置好的缓存。

  1. 缓存操作:
  • 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",
        }
    }
}

 用法也与内置缓存使用一样。

你可能感兴趣的:(Django)