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', # 自定義引擎 } }