缓存
1.开发调试
CACHES = { 'default':{ 'BACKEND':'django.core.cache.backends.dummy.DummyCache', #引擎 'TIMEOUT':300, #超时时间 'OPTIONS':{ 'MAX_ENTRIES':300, #缓存最大个数 'CULL_FREQUENCY':3, #剔除缓存个数 }, 'KEY_PREFIX':'', #缓存key的前缀(默认空) 'VERSION':1, #缓存key的版本(默认1) 'KEY_FUNCTION':函数名 #生成key的函数 #缓存中默认生成函数key的组合方式:key_prefix:version:key # 前缀: 版本: key } }
2.内存
CACHES = { 'default':{ 'BACKEND':'django.core.cache.backends.locmem.LocMemCaChe', #引擎 'LOCATION':'unique-anowflake' #储存到内存中的全局变量名 'TIMEOUT':300 #超时时间 'OPTIONS':{ 'MAX_ENTRIES':300, #缓存最大个数 'CULL_FREQUENCY':3, #剔除缓存个数 } 'KEY_PREFIX':'', 'VERSION':1, 'KEY_FUNCTION': #缓存中key的组合方式:key_prefix:version:key } }
3.文件
CACHES = { 'default':{ 'BACKEND':'django.core.core.cache.backends.filebased.FileBasedCache', #引擎 'LOCATION':'/var/tmp/django_cache' #储存路径 'TIMEOUT':300 #超时时间 'OPTIONS':{ 'MAX_ENTRIES':300, #缓存最大个数 'CULL_FREQUENCY':3, #剔除缓存个数 } 'KEY_PREFIX':'', 'VERSION':1, 'KEY_FUNCTION': #缓存中key的组合方式:key_prefix:version:key } }
4.数据库
CACHES = { 'default':{ 'BACKEND':'django.core.cache.backends.DatabaseCache', #引擎 'LOCATION':'my_cache_table' #数据库表 'TIMEOUT':300 #超时时间 'OPTIONS':{ 'MAX_ENTRIES':300, #缓存最大个数 'CULL_FREQUENCY':3, #剔除缓存个数 } 'KEY_PREFIX':'', 'VERSION':1, 'KEY_FUNCTION': #缓存中key的组合方式:key_prefix:versionfunction } } # 执行创建表命令 python manage.py createcachetable
5.Memcache缓存(python-memcached模块)
CACHES = { 'default':{ 'BACKEND':'django.core.core.cache.backends.memcached.MemcachedCache', #引擎 'LOCATION':'172.18.43.22:11211' } } CACHES = { 'default':{ 'BACKEND':'django.core.core.cache.backends.memcached.MemcachedCache', #引擎 'LOCATION':'/tmp/memcached.sock' } } CACHES = { 'default':{ 'BACKEND':'django.core.core.cache.backends.memcached.MemcachedCache', #引擎 'LOCATION':[('172.18.43.22:11211',10), ('172.18.43.23:11211',15),] #集群,后面的数值是权重 } }
5.1 Memcache缓存(pylibmc模板)
CACHES = { 'default':{ 'BACKEND':'django.core.core.cache.backends.memcached.PyLibMCCache', #引擎 'LOCATION':'172.18.43.22:11211' } } CACHES = { 'default':{ 'BACKEND':'django.core.core.cache.backends.memcached.MemcachedCache', #引擎 'LOCATION':'/tmp/memcached.sock' } } CACHES = { 'default':{ 'BACKEND':'django.core.core.cache.backends.memcached.MemcachedCache', #引擎 'LOCATION':[('172.18.43.22:11211',10), ('172.18.43.23:11211',15),] #集群,后面的数值是权重 } }
使用
1. 对单独views函数做缓存(视图整体缓存)
from djando.views.decorators.cache import cache_page @caache_page(10) #缓存10秒 def index(request):
2. 局部视图缓存
#首先: {% load cache %} #然后: {% cache 10 c1 %} #cache 缓存时间 缓存key <h1>{{ ctime }}</h1> {% endcache %}
3. 全站缓存
#使用中间件: 'django.middleware.cache.UpdateCacheMiddleware' #写入缓存 '其他中间件' 'django.middleware.cache.FetchFromCacheMiddleware' #获取缓存