增加cache配置
在settings.py中增加cache配置项。django自带的cache backend有DataBaseCache、FileBasedCached、LocMemCache、MemcachedCache、PyLibMCCache,以及第三方的redis cache等。
# 配置cache
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': BASE_DIR + '/django.cache',
'TIMEOUT': 60,
'OPTIONS': {
'MAX_ENTRIES': 1000,
}
}
}
缓存整个site
在setting.py中的中间件配置列表开始处增加'django.middleware.cache.UpdateCacheMiddleware',列表结束前增加'django.middleware.cache.FetchFromCacheMiddleware'。
MIDDLEWARE = [
'django.middleware.cache.UpdateCacheMiddleware', # 增加使用cache
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'edwin.middleware.PrintMiddleware', # 自定义中间件
'django.middleware.cache.FetchFromCacheMiddleware', # 增加使用cache
]
缓存某个视图view
两种实现方式:
- 在视图函数上增加装饰器
from django.views.decorators.cache import cache_page
@cache_page(60*15)
def index(request):
....
- 在URLConf中包装视图函数
自定义缓存
#from django.core.cache import cache # default cache, configed in setting.py
from django.core.cache import caches # caches['default'], the same as django.core.cache
def index(request):
cache = caches['default']
cache.get(...)
...