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