Django 支持的缓存类型

  • 内存(local-memory caching)
  • 文件(FileSystem caching)
  • 数据库(Database caching)
  • Memcache缓存

配置缓存

内存缓存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake',
    }
}

文件缓存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
    }
}

数据库缓存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table',
    }
}

创建缓存表:

python manage.py createcachetable

Memcache缓存

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

缓存使用

全站缓存

MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
]

视图缓存

from django.views.decorators.cache import cache_page

@cache_page(60 * 15)
def my_view(request):
    ...

模板缓存

{% load cache %}
{% cache 500 sidebar %}
    .. sidebar ..
{% endcache %}

底层缓存API

from django.core.cache import cache

cache.set('my_key', 'hello, world!', 30)
cache.get('my_key')