1、Django缓存说明:python
在动态网站中,用户访问的网站数据是根据数据库的内容实时变化的。数据库
这样就会存在一个问题:用户端频繁的刷新,会影响服务端的数据库的性能。django
使用缓存,能够把一些不须要实时刷新的数据,在一段时间内不访问数据库。缓存
官方介绍:https://docs.djangoproject.com/en/3.0/topics/cache/socket
2、根据缓存引擎分类,Django能够分为6种ide
开发调试、内存缓存、文件缓存、数据库缓存、Memcache缓存memcached
settings.py中做以下配置函数
#-----------一、开发调试缓存(实际不产生任何缓存)-------------- CACHES={ 'default':{ 'BACKEND':'django.core.cache.backends.dummy.DummyCache', # 使用的测试引擎,不会产生任何缓存 'TIMEOUT':300, # 共通项 # 缓存生存周期 'OPTIONS':{ # 共通项,任何类型的缓存均可以配置 'MAX_ENTRIES': 300, # 最大缓存条数 'CULL_FREQUENCY': 3, # 默认值是3,到达最大缓存后,删除当前缓存的条数,1/CULL_FREQUENCY' 'KEY_PREFIX': '', # 缓存Key的前缀 'VERSION': 1, # 缓存Key的版本 'KEY_FUNCTION' : '函数名' # 生Key的函数,定义了如何将key、版本组合成最终的key,默认函数会生成(前缀:版本:key) }, }, } #-----------二、内存缓存-------------- # 缓存使用最近使用最少 least-recently-used (LRU) 的剔除策略。 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', # 内存缓存引擎 'LOCATION': 'unique-snowflake', # 给内存位置命名,只设一个缓存时,可省,若是设置了多个内存缓存,必定要设置名字,而且彼此不相同 'TIMEOUT':300, 'OPTIONS':{ 'MAX_ENTRIES': 300, 'CULL_FREQUENCY': 3, }, }, } #-----------三、文件缓存-------------- CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 文件缓存引擎 'LOCATION': '/var/tmp/django_cache', # 路径 # 'LOCATION': 'c:/foo/bar', # Windows路径 'TIMEOUT':300, 'OPTIONS':{ 'MAX_ENTRIES': 300, 'CULL_FREQUENCY': 3, }, }, } #-----------四、数据库缓存-------------- # 使用前,须要使用python manage.py createcachetable建立缓存数据库表,表名就是LOCATION的名字 # 添加多数据库缓存时,python manage.py createcachetable,不会操做现有的表,会自动添加新表 # 对于多数据库,能够添加缓存路由,参照官方 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', # 数据库缓存引擎 'LOCATION': 'my_cache_table', } } #-----------3-一、多数据库缓存-------------- CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', # 数据库缓存引擎 'LOCATION': 'my_cache_table1', } 'default_2': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 'LOCATION': 'my_cache_table2', } } #-----------五、Memcache缓存-------------- CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', # Memchache的ip地址 # 'LOCATION': 'unix:/tmp/memcached.sock', # 【unix:】是固定的,后面接Unix socket文件的路径 'OPTIONS': { 'server_max_value_length': 1024 * 1024 * 2, # 配置缓存最大空间,1024bit(1K)*1024*2=2M } } } #-----------六、Pylibmc缓存-------------- CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache', # Pylibmc引擎 'LOCATION': '127.0.0.1:11211', 'OPTIONS': { 'binary': True, 'username': 'user', 'password': 'pass', 'behaviors': { 'ketama': True, } } } } #-----------七、自定义缓存-------------- # 导入引擎配置文件,Django不推荐,由于Django带的引擎通过了测试 CACHES = { 'default': { 'BACKEND': 'path.to.backend', # 自定义引擎 } }