我們知道,在django中,請求到達檢視後,檢視會從資料庫取資料放到模板中進行動態渲染,渲染後的結果就是使用者看到的html頁面。但是,如果每次請求都從資料庫取資料並渲染,將極大降低效能,不僅伺服器壓力大,而且客戶端也無法即時獲得響應。如果能將渲染後的結果放到速度更快的快取中,每次有請求過來,先檢查快取中是否有對應的資源,如果有,直接從快取中取出來返回響應,節省取資料和渲染的時間,不僅能大大提高系統效能,還能提高使用者體驗。django view通過models從db獲取資料快取是一類統稱,一般其介質是速度很快的記憶體,但也可以是能加快資料讀取的其它方式
然後呼叫template去渲染,形成真正的httpresponse
通過http socket將資料寫回給客戶端
上面的1,2就省略了
根據url直接從快取池裡取出儲存過的httpresponse,返回給客戶端
開發除錯快取
記憶體快取
資料庫快取
檔案快取(常用)
memcache快取(使用python-memcached模組)
memcache快取(使用pylibmc模組)
使用redis快取(常用)
使用mongdb快取
配置
caches =
}
說明
linux系統上要把快取專案放在檔案系統上,請為cache_backend使用」file://「的快取型別。例如,要把快取資料儲存在/var/tmp/django_cache上,請使用此設定:
cache_backend = 'file:///var/tmp/django_cache'
**注意:**有三個斜線。 頭兩項是file://,第三個是第乙個字元的目錄路徑,/var/tmp/django_cache。
使用的是windows,在file://之後加上檔案的碟符:
file://d:/cache/django_cache
適合場景
小**的低成本解決方案
安裝memcache
1、安裝memcache
sudo apt-get install memcached
2、執行memcached
memcached -d -m 50 -p 11311 -u root
-d重啟或者啟動服務 -m 最大記憶體 預設64 -p 埠號 - u 使用者名稱
3、預設只能本地訪問需要修改
django安裝python-memcached
pip install python-memcached
單個配置方式
caches =
}}
多個伺服器配置
caches =
}
應用場景
快取機制對於小型**,比如你做的各種部落格、或者是訪問量比較小的,意義不是很大。一般是用於,規模中等或較大,訪問量大。
安裝redis
pip install django_redis
建立資料庫
python manage.py createcachetable
配置
caches =}}
,}
設定redis儲存django的session資訊
session_engine =
"django.contrib.sessions.backends.cache"
session_cache_alias =
"default"
django提供了不同粒度的快取,可以快取某個頁面,可以只快取乙個頁面的某個部分,甚至可以快取整個**.說明
使用者的請求通過中介軟體,經過一系列的認證等操作,如果請求的內容在快取中存在,則使用fetchfromcachemiddleware獲取內容並返回給使用者,
當返回給使用者之前,判斷快取中是否已經存在,如果不存在,則updatecachemiddleware會將快取儲存至django的快取之中,以實現全站快取,
配置
middleware =
['django.middleware.cache.updatecachemiddleware'
,# 響應httpresponse中設定幾個headers
# 其它中介軟體
'django.middleware.cache.fetchfromcachemiddleware'
,# 用來快取通過get和head方法獲取的狀態碼為200的響應
]
其它配置
cache__middleware_seconds=
15# 設定超時時間為15秒
注意
示例**
views檢視函式
from django.shortcuts import render
import time
defindex
(request)
: cache_time = time.time(
)return render(request,
'index.html'
,)
# 載入快取
} # 設定超時時間為15秒
配置方式一
from django.views.decorators.cache import cache_page
@cache_page(60*
10) 秒數,這裡指快取 10 分鐘
defcache_view
(request)
:return render(request,
'cache/index.html'
,)
配置方式二
from django.views.decorators.cache import cache_page
urlpatterns =
[url(r'cache_test/$'
, cache_page(60*
10)(cache_view)),
]
語法
1、引入templatetag
2、使用快取
快取內容
模板
# 載入快取
} # 設定超時時間為15秒
Django 快取之配置Redis
快取工作原理 快取是將一些常用的資料儲存記憶體或者memcache中,在一定的時間內有使用者來訪問這些資料時,則不再去執行資料庫及渲染等操作,而是直接從記憶體或memcache的快取中去取得資料,然後返回給使用者。django提供了6種快取方式 開發除錯快取 記憶體快取 檔案快取 資料庫快取 mem...
django 重新整理快取 Django 中的快取問題
django 中的快取問題 簡單介紹 在動態 中,使用者所有的請求,伺服器都會去資料庫中進行相應的增,刪,查,改,渲染模板,執行業務邏輯,最後生成使用者看到的頁面.當乙個 的使用者訪問量很大的時候,每一次的的後台操作,都會消耗很多的服務端資源,所以必須使用快取來減輕後端伺服器的壓力.快取是將一些常用...
Django中的快取的配置與使用
一 使用裝飾器 在檔案開頭匯入下面 然後在函式上方新增快取的裝飾器 from django.views.decorators.cache import cache page cache page 30 二 原生快取 django中提供了6種快取方式 常用的快取配置 memcache快取 首先要建立快...