Django框架7:配置緩存

一、Django緩存說明:

        在動態網站中,用戶訪問的網站數據是根據數據庫的內容實時變化的。

        這樣就會存在一個問題:用戶端頻繁的刷新,會影響服務端的數據庫的性能。

        使用緩存,可以把一些不需要實時刷新的數據,在一段時間內不訪問數據庫。

 官方介紹:https://docs.djangoproject.com/en/3.0/topics/cache/

二、根據緩存引擎分類,Django可以分爲6種

        開發調試、內存緩存、文件緩存、數據庫緩存、Memcache緩存

        

        settings.py中作如下配置

#-----------1、開發調試緩存(實際不產生任何緩存)--------------

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)
        
        },
    },
}


#-----------2、內存緩存--------------
# 緩存使用最近使用最少 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,          
        },
    },
}

#-----------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,          
        },
    },
}
    
#-----------4、數據庫緩存--------------
    # 使用前,需要使用python manage.py createcachetable創建緩存數據庫表,表名就是LOCATION的名字
    # 添加多數據庫緩存時,python manage.py createcachetable,不會操作現有的表,會自動添加新表
    # 對於多數據庫,可以添加緩存路由,參照官方
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',    # 數據庫緩存引擎
        'LOCATION': 'my_cache_table',
    }
}
#-----------3-1、多數據庫緩存--------------
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',
    }
}



#-----------5、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
        }
    }
}


#-----------6、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,
            }
        }
    }
}
#-----------7、自定義緩存--------------
# 導入引擎配置文件,Django不推薦,因爲Django帶的引擎經過了測試
CACHES = {
    'default': {
        'BACKEND': 'path.to.backend',        # 自定義引擎
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章