138 更改session的儲存機制

2021-10-03 04:18:34 字數 1519 閱讀 8135

預設情況下,session資料時儲存到資料庫中,當然也可以將session資料儲存到其他地方。可以通過設定session_engine來更改session的儲存位置,這個可配置為以下幾種方案:

1.django.contrib.session.backends.db:使用資料庫,預設就是這種方案。

2.django.contrib.sessions.backends.file:使用檔案來儲存session。

3.django.contribsessions.backends.cache:使用快取來儲存session。想要將資料儲存到快取中,前提是你必須要在settings.py中已經配置好了caches,並且是需要使用memcached,而不能使用純記憶體作為快取。

4.django.contribsessions.backends.cached_db:在儲存資料的時候,會將資料先存到快取中,再存到資料庫中,這樣就可以保證萬一快取系統出現問題,session資料也不會丟失,在獲取資料的時候,會向從快取中獲取,如果快取中沒有,那麼就會從資料庫中獲取。需要注意的是,這種情況下要配置memcached快取和session_engine,示例**如下:

# memcached settings

caches =

}# location of session_id, session_data

session_engine =

'django.contrib.sessions.backends.cached_db'

這種情況下在cmd視窗通過telnet操作memcached,檢視是否儲存到了快取中,使用命令:stats items, 返回的結果:
stat items:

1:number 1

之後,檢視快取中items:1的具體資訊,執行命令:
stats cachedump 1

0

返回的結果為:
item age [2 b; 1581842070 s]

end

獲得age的具體資訊,執行命令:get age。
get age

value age 16220

end

5.django.contrib.sessions.backends.signed_cookies:將session資訊加密後儲存到瀏覽器的cookie中,這種方式要注意安全,建議設定session_cookie_httponly=true,那麼在瀏覽器中不能通過js來操作session資料,並且還需要對settings.py中的secret_key進行解密,因為一旦別人知道這個secret_key,那麼久可以進行解密,另外還有即使在cookie中,儲存的資料不能超過4kb。
# 將session資訊加密後儲存到瀏覽器的cookie中

# session_engine = 'django.contrib.sessions.backends.signed_cookies'

在這種情況下,只會將session資訊加密後儲存到瀏覽器中cookie中,而不會儲存到資料庫中。

儲存會話資料 Session

lsession session是伺服器端技術,利用這個技術,伺服器在執行時可以為每乙個使用者的瀏覽器建立乙個其獨享的session物件,由於session為使用者瀏覽器獨享,所以使用者在訪問伺服器的web資源時,可以把各自的資料放在各自的session中,當使用者再去訪問伺服器中的其它web資源時...

Session程序外儲存

為什麼有session程序外儲存?隨著專案的複雜度增加,使用者量增加,一台伺服器已經不可以支援很多使用者訪問一台伺服器了 使用者提交到一台伺服器,會再這台伺服器中保留資料,但是要訪問其他伺服器就要重新提交 解決方案 實現session共享 用web伺服器集群 專門找一台機器,做session狀態儲存...

使用session儲存資訊

session物件可以儲存和讀取客戶資訊,到客戶關閉瀏覽器或長時間不傳送請求時釋放。簡單的說就是,session物件儲存的資訊是跨頁面的,儲存上了就一直有。在.jsp頁面中儲存account資訊 account type text value session.setattribute account...