一、缓存
Django为我们提供了5种缓存机制:
1)开发调试用的缓存(什么都不干)
2)内存缓存
3)文件缓存
4)数据库缓存
5)memcache缓存
1.通用配置
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 缓存引擎,每种缓存就引擎不同,其他是通用的 # 以下是通用配置 'TIMEOUT': 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期) 'OPTIONS': { 'MAX_ENTRIES': 300, # 最大缓存个数(默认300) 'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3) }, 'KEY_PREFIX': '', # 缓存key的前缀(默认空) 'VERSION': 1, # 缓存key的版本(默认1) 'KEY_FUNCTION': 'func_name' # 生成key的函数(默认函数会生成为:【前缀:版本:key】,默认函数名为 default_key_func) } }
2.开发调试缓存
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 开发调试缓存 引擎 #通用配置放这里 } }
3.内存缓存
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', # 内存缓存引擎 'LOCATION': 'unique-snowflake', # 保证命名唯一,因为内存缓存就是一个全局变量 #通用配置放这里 } }
4.文件缓存
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 文件缓存引擎 'LOCATION': os.path.join(BASE_DIR,'cache'), # 文件存放位置 #通用配置放这里 } }
5.数据库缓存
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', #数据库缓存引擎 'LOCATION': 'my_cache_table', # 使用的数据库表 #通用配置放这里 } }
使用数据库缓存之前,要执行命令先创建一张缓存表:
python manage.py createcachetable
6.Memcache缓存
# 使用单台memcache CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } } # 使用本地memcache文件 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'unix:/tmp/memcached.sock', } } # 使用简单集群 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ '172.19.26.240:11211', # 如果带权重,则加上权重 ('172.19.26.240:11211',5), '172.19.26.242:11211', # ('172.19.26.242:11211',15), ] } }
memcache的引擎除了有MemcachedCache(这个使用的是python-memcached模块),还可以使用PyLibMCCache引擎(这个使用的是pylibmc模块)。