django的快取框架
可以使用的快取方式: 1.可以使用Memcached作為快取 --- 記憶體,分散式 ,老---新redis(預設不支援) 2.可以使用資料庫進行快取 ---- 資料量大,效率低 3.可以使用檔案快取 --- 使用不方便,效率低 4.使用本地記憶體進行快取 **5.可以接入其他儲存方式 --- redis 記憶體,效率高
4.資料庫快取的使用: 1.在setting中配置快取資料庫: CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 'LOCATION': 'my_cache_table', } } LOCATION用來指定快取資料庫表的名字
2.執行 python manage.py createcachetable 會自動的資料庫建立快取表 3.使用: 直接在需要快取的檢視函式上加上裝飾器即可: 如: @cache_page(60) def testCache(request): django會自動快取該檢視函式對應的html, ()中的引數表示快取多長時間之後過期,單位秒 如果沒有快取會完整的載入資料,如果有快取資料,直接就載入快取資料 多個url指向同一檢視函式. 每個檢視快取(如每個站點快取)都是從URL鍵入的。 如果多個URL指向同一檢視,則每個URL將單獨快取。 繼續該my_view示例,如果您的URLconf看起來像這樣:
urlpatterns = [ path('foo/<int:code>/', my_view), ] 5.自定義快取 存,取 # 自定義快取 def testCache(request): # 判斷快取中是否有資料 # 從快取中取資料,獲取到快取內容 cacheTest = cache.get("testcachehtml") if cacheTest:#有資料--直接響應 return HttpResponse(cacheTest) else:#沒有資料,--載入並存到快取中區 time.sleep(8) tem = loader.get_template("testCache.html") strHtml = tem.render() # 儲存到快取中去 cache.set("testcachehtml",strHtml,60)
return HttpResponse(strHtml)
7.使用redis資料庫作為快取資料庫 --快 1.安裝對應的模組 pip install django-redis2.在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) def testCache(request): django會自動快取該檢視函式對應的html, ()中的引數表示快取多長時間之後過期,單位秒 如果沒有快取會完整的載入資料,如果有快取資料,直接就載入快取資料 4.注意:使用redis儲存,需要啟動redis服務,否則會報資料連線錯誤 啟動redis 5.測試: select 1 切換庫 keys * 檢視所有 get key 獲取某個值
8.快取資料庫的配置 常用配置: TIMEOUT:用於快取的預設超時(以秒為單位)。此引數預設為300秒(5分鐘)。您可以設定TIMEOUT為None預設情況下快取鍵永不過期。值0使得鍵立即過期(實際上“不快取”)。 OPTIONS中--- MAX_ENTRIES:刪除舊值之前快取中允許的最大條目數。此引數預設為300。