Django 幾種常用的快取配置

2021-09-24 17:34:01 字數 3446 閱讀 6642

我們知道,在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快取 首先要建立快...