增加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(...)
...