django是動態網站,通常來講客戶端向服務端發起請求,須要實時的去views執行函數,並從數據庫取出數據,再由template模板進行渲染,最後返回給客戶端,一旦訪問量增大,服務端的壓力也會變得很高;在django中對於用戶的訪問,採起設置緩存的形式,當用戶必定時間內下一次訪問相同的網站,則會返回緩存中的內容,請求就不用通過views、models和template的處理;python
'django.core.cache.backends.db.DatabaseCache' # 數據庫的形式進行緩存 'django.core.cache.backends.dummy.DummyCache' # 開發調試 'django.core.cache.backends.filebased.FileBasedCache' # 文件進行緩存 'django.core.cache.backends.locmem.LocMemCache' # 內存中進行緩存 'django.core.cache.backends.memcached.MemcachedCache' # Memcache緩存(python-memcached模塊) 'django.core.cache.backends.memcached.PyLibMCCache' # Memcache緩存(pylibmc模塊)
①、利用文件進行緩存:數據庫
CACHES = { 'default': {
# 設置緩存的形式 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
# 文件的保存路徑 'LOCATION': '/var/django_cache', 'TIMEOUT': 600, 'OPTIONS': { 'MAX_ENTRIES': 1000 } } }
②、利用數據庫進行緩存:django
CACHES = { 'default': { # 緩存形式設置爲數據庫 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', # 數據庫的名字 'LOCATION': 'cache_table_name', 'TIMEOUT': 600, 'OPTIONS': { 'MAX_ENTRIES': 2000 } } }
利用數據庫的形式進行緩存,須要先建立數據庫,執行一條命令:緩存
python manage.py createcachetable cache_table_name
# 導入緩存模塊
from django.views.decorators.cache import cache_page # 驗證緩存 @cache_page(60 * 0.5) # 設置緩存時間 def caches(request): current_time = time.time()
# 讀取數據並渲染到網頁中 return HttpResponse(current_time)
django緩存機制大概的理解:訪問一個網址時,嘗試去cache中檢查是否有當前網頁的緩存內容,若是網頁在緩存中,則直接從緩存中取出,返回給客戶端,不然的話,緩存中自動存儲當前訪問的頁面,以便下次使用;app
①、緩存機制加到中間件裏實現全站緩存:memcached
MIDDLEWARE_CLASSES = [ 'django.middleware.cache.UpdateCacheMiddleware', #增長 必須放最上 'django.middleware.cache.FetchFromCacheMiddleware', #增長 必須放最後 ] CACHE_MIDDLEWARE_ALIAS = 'default' CACHE_MIDDLEWARE_SECONDS = 10 # 失效的時間 秒 CACHE_MIDDLEWARE_KEY_PREFIX = 'ValexCache' # 區分網站
②、單獨視圖中實現緩存機制:函數
方式一、views.py 增長裝飾器:網站
# 導入緩存模塊 from django.views.decorators.cache import cache_page # 驗證緩存 @cache_page(60 * 0.5) # 設置緩存時間 def caches(request): current_time = time.time() # 讀取數據並渲染到網頁中 return HttpResponse(current_time)
方式二、路由中配置使用緩存機制:url
from form_app import views from django.views.decorators.cache import cache_page urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/', views.login, name='login'), # 路由中配置,cache_page(5)(views.caches), 數字爲秒 url(r'^cache/', cache_page(5)(views.caches), name='cache'), ]
③、局部使用緩存機制:spa
a. 引入TemplateTag {% load cache %} b. 使用緩存 {% cache 5000 緩存key %} # 5000秒 緩存內容 {% endcache %}