Django 中的 数据缓存
Django 中的 数据缓存
配置
CACHES = {
'default': {
# Memcache缓存(python-memcached模块)
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
'LOCATION': 'D:\cache',
# 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', # 内存缓存
# 'LOCATION': 'unique-snowflake',
# 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 文件缓存
# 'LOCATION': '/var/tmp/django_cache',
# 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', # 数据库缓存
# 'LOCATION': 'my_cache_table', # 数据库表
'TIMEOUT': 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
'OPTIONS': {
'MAX_ENTRIES': 300, # 最大缓存个数(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
}
}
}
应用
-
全站
MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', # 其他中间件... 'django.middleware.cache.FetchFromCacheMiddleware', ]
-
单独视图
from django.views.decorators.cache import cache_page @cache_page(60 * 15) def my_view(request): ...
-
局部模板
{% load cache %} {% cache 5 'xxx' %} 缓存 {{ now }} {% endcache
缓存使用redis
django-redis
https://django-redis-chs.readthedocs.io/zh_CN/latest/
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
redis作为 session backend 使用配置
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"