1. 程式人生 > >Django中的快取框架 --- 提高web的訪問效率

Django中的快取框架 --- 提高web的訪問效率

1、官網檢視資料

https://docs.djangoproject.com/en/2.1/topics/cache/

2、django快取框架的特點

1、儘可能少的程式碼
2、儘可能的快
3、一致性:不同的資料儲存方式,提供一致的藉口(api)來訪問
4、擴充套件性:可以介入外部的儲存方式

3、可以使用的快取方式

1、可以使用Memcached作為快取 -- 內容,分散式,老(新的reids(預設不支援))
2、可以使用資料庫進行快取 -- 資料量大,效率低
3、可以使用檔案快取 -- 使用不方便,效率低
4、使用本地記憶體進行快取
5、可以接入其他儲存方式 -- redis  記憶體,效率高

4、資料庫快取的使用

1、在setting中配置快取資料庫

CACHES = {
		    'default': {
			'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
			'LOCATION': 'my_cache_table',
		    }
		}
		
LOCATION用來指定快取資料庫表的名字

2、執行命令

python manager.py  createcachetable
會自動的資料庫建立快取表

3、使用:

直接在需要快取的檢視函式上加上裝飾器即可:
如:@cache_page(60)
django會自動快取該檢視函式對應的html,()中的引數表示快取多長時間之後過期,單位秒
如果沒有快取會完整的載入資料,如果有快取資料,直接就載入快取資料 
多個url指向同一檢視函式:
	每個檢視快取(如每個站點快取)都是從URL鍵入的。如果多個URL指向同一檢視,則每個URL將單獨快取。

5、自定義快取

def testCache(request):

    # 判斷快取中是否有資料
    # 從快取中取資料,獲取到快取內容
    cacheTest = cache.get('testCahce')
    if cacheTest: # 有資料--直接響應
        return HttpResponse(cacheTest)
    else: # 沒有資料,載入並存儲到快取中
        time.sleep(3) # 假裝到資料庫取資料
        tem = loader.get_template('testCache.html')

        strHtml = tem.render()
        # 儲存到快取中去
        cache.set('testCahce',strHtml,60)

        return HttpResponse(strHtml)

6、cache 快取操作

1.包 : from django.core.cache import cache
2.操作:
	    存: cache.set(key,value,快取時間)
	    取: cache.get(key)

	    add  新增
	    get_or_set 如果有對應的值表示獲取,沒有就設定
	    get_many 獲取多個
	    set_many  設定多個值
	    delete  刪除
	    delete_many  刪除多個
	    clear  清除
	    touch 設定有效時間

7、使用redis資料庫作為快取資料庫 – 快

1、資料

http://django-redis-chs.readthedocs.io/zh_CN/latest/#django

2、使用:

1、安裝對應的模組

pip install django-redis

2、在setting中配置

CACHES = {
			    "default": {
				"BACKEND": "django_redis.cache.RedisCache",
				"LOCATION": "redis://127.0.0.1:6379/1",
				"OPTIONS": {
				    "CLIENT_CLASS": "django_redis.client.DefaultClient",
				}
			    }
			}

3、使用redis快取

與上面資料庫快取一樣的用法
直接在需要的檢視函式上加上裝飾器即可:
如: @cache_page(60)
django會自動快取該檢視函式對應的html, ()中的引數表示快取多長時間之後過期,單位秒
如果沒有快取會完整的載入資料,如果有快取資料,直接就載入快取資料 

4、注意

使用redis儲存,需要啟動redis服務,否則會報資料鏈接錯誤
啟動redis:
	在安裝目錄下的src目錄下
	輸入命令:sudo ./redis-server

5、在redis中查詢快取資料

啟動redis的客戶端
在安裝目錄下的src目錄下
	輸入命令:sudo ./redis-cli
	select 1 切換庫
	keys * 檢視所有
	get key  獲取某個值

8、快取資料庫的配置

常用配置:
	TIMEOUT:用於快取的預設超時(以秒為單位)。此引數預設為300秒(5分鐘)。您可以設定TIMEOUT為None預設情況下快取鍵永不過期。值0使得鍵立即過期(實際上“不快取”)。
	OPTIONS中--- MAX_ENTRIES:刪除舊值之前快取中允許的最大條目數。此引數預設為300。