Djangoキャッシュの詳細構成(分かりやすい-強く推奨)


キャッシュ
デフォルトのキャッシュ
#      default
CACHES = {
     
     'default': {
     
         'BACKEND': 'django_redis.cache.RedisCache',
         'LOCATION': [
             'redis://1.2.3.4:6379/0',
         ],
         'KEY_PREFIX': 'teamproject',
         'OPTIONS': {
     
             'CLIENT_CLASS': 'django_redis.client.DefaultClient',
             'CONNECTION_POOL_KWARGS': {
     
                 'max_connections': 1000,
             },
             'PASSWORD': '1qaz2wsx',
         }
	},
#      - page
	'page': {
     
         'BACKEND': 'django_redis.cache.RedisCache',
         'LOCATION': [
             'redis://1.2.3.4:6379/1',
         ],
         'KEY_PREFIX': 'teamproject:page',
         'OPTIONS': {
     
             'CLIENT_CLASS': 'django_redis.client.DefaultClient',
             'CONNECTION_POOL_KWARGS': {
     
                 'max_connections': 500,
             },
             'PASSWORD': '1qaz2wsx',
         }
	},
#      session
	'session': {
     
         'BACKEND': 'django_redis.cache.RedisCache',
         'LOCATION': [
     		 'redis://1.2.3.4:6379/2',
     	 ],
    	'KEY_PREFIX': 'teamproject:session',
    	'TIMEOUT': 1209600,
    	'OPTIONS': {
     
	        'CLIENT_CLASS': 'django_redis.client.DefaultClient',
	        'CONNECTION_POOL_KWARGS': {
     
	            'max_connections': 2000,
	        },
	        'PASSWORD': '1qaz2wsx',
        }
	},
#        api
	'api': {
     
		'BACKEND': 'django_redis.cache.RedisCache',
		'LOCATION': [
		    'redis://1.2.3.4:6379/3',
		],
		'KEY_PREFIX': 'teamproject:api',
		'OPTIONS': {
     
		    'CLIENT_CLASS': 'django_redis.client.DefaultClient',
		    'CONNECTION_POOL_KWARGS': {
     
		        'max_connections': 500,
		    },
		    'PASSWORD': '1qaz2wsx',
		}
	},
}
:Redisの下位層に提供される複数のデータベースによってキャッシュデータを分離することによって、データのキャッシュを容易にする管.Redisのマスタースレーブレプリケーション(読み書き分離)を構成すると、LOCATIONテーブルに複数のRedis接続を構成することができ、1番目はmasterとして読み書き操作を行い、その後はslaveとして読み書き操作を行う.
全局キャッシュ
MIDDLEWARE_CLASSES = [
     'django.middleware.cache.UpdateCacheMiddleware',
     ...
     'django.middleware.common.CommonMiddleware',
     ...
     'django.middleware.cache.FetchFromCacheMiddleware',
]
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_SECONDS = 300
CACHE_MIDDLEWARE_KEY_PREFIX = 'djang:cache'

ビューレイヤキャッシュ views
# views
from django.views.decorators.cache import cache_page
from django.views.decorators.vary import vary_on_cookie

@cache_page(timeout=60 * 15, cache='page') # cache     
@vary_on_cookie
def my_view(request):
	pass
url
# url.py 
from django.views.decorators.cache import cache_page

urlpatterns = [
	url(r'^foo/([0-9]{1,2})/$', cache_page(60 * 15)(my_view)),
]