cache

缓存的backend可以是django内置的,也可以是第三方的。

  • 缓存整个站点

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

  • 视图缓存

    from django.views.decorators.cache import cache_page

    @cache_page(60 * 2) def my_view(request): …

    或者在URLconf中指定 urlpatterns = [ path(‘foo/int:code/', cache_page(60 * 2)(my_view)), ]

  • 模板片段缓存

    {% load cache %} {% cache … %} … {% endcache %}


redis

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": os.environ.get("REDIS_URL", ''),
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        },
        "TIMEOUT": 60,
    }
}

memcached

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

database

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