×

 網(wǎng)站的session機(jī)制是什么

  • 作者:新網(wǎng)
  • 來源:新網(wǎng)
  • 瀏覽:100
  • 2018-02-26 17:56:40

  session是另一種記錄客戶狀態(tài)的機(jī)制,不同的是cookie保存在客戶端瀏覽器中,而session保存在服務(wù)器上??蛻舳藶g覽器訪問服務(wù)器的時候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上,這就是session??蛻舳藶g覽器再次訪問時只需要從該session中查找該客戶的狀態(tài)就可以了。session相當(dāng)于程序在服務(wù)器上建立的一份用戶的檔案,用戶來訪的時候只需要查詢用戶檔案表就可以了。

 session是另一種記錄客戶狀態(tài)的機(jī)制,不同的是cookie保存在客戶端瀏覽器中,而session保存在服務(wù)器上??蛻舳藶g覽器訪問服務(wù)器的時候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上,這就是session。客戶端瀏覽器再次訪問時只需要從該session中查找該客戶的狀態(tài)就可以了。session相當(dāng)于程序在服務(wù)器上建立的一份用戶的檔案,用戶來訪的時候只需要查詢用戶檔案表就可以了。

132925912.jpg
<div>session的生命周期與有效期
 
為了獲得更高的存取速度,服務(wù)器一般把session放在內(nèi)存里。每個用戶都會有一個獨(dú)立的session。如果session內(nèi)容過于復(fù)雜,當(dāng)大量客戶訪問服務(wù)器時可能會導(dǎo)致內(nèi)存溢出。session的使用雖然比cookie方便,但是過多的session存儲在服務(wù)器內(nèi)存中,會對服務(wù)器造成壓力。因此,session里的信息應(yīng)該盡量精簡。
 
session在用戶第一次訪問服務(wù)器的時候自動創(chuàng)建。session生成后,只要用戶繼續(xù)訪問,服務(wù)器就會更新Session的最后訪問時間,并維護(hù)該session。
 
由于有越來越多的用戶訪問服務(wù)器,因此session也會越來越多。為防止內(nèi)存溢出,服務(wù)器會把長時間內(nèi)沒有活躍的session從內(nèi)存中刪除。這個時間就是session的超時時間。如果超過了超時時間沒訪問過服務(wù)器,session就自動失效了。
 
session與cookie
 
雖然session保存在服務(wù)器,但是它的正常運(yùn)行仍然需要客戶端瀏覽器的支持。這是因?yàn)閟ession需要使用cookie作為識別標(biāo)志。HTTP協(xié)議是無狀態(tài)的,session不能依據(jù)HTTP連接來判斷是否為同一客戶,因此服務(wù)器向客戶端瀏覽器發(fā)送一個名為SESSIONID的cookie,它的值為該Session的id。Session依據(jù)該cookie來識別是否為同一用戶。
 
對于不支持cookie的手機(jī)瀏覽器,有另一種解決方案:URL地址重寫。URL地址重寫的原理是將該用戶session的id信息重寫到URL地址中,服務(wù)器能夠解析重寫后的URL獲取session的id。這樣即使客戶端不支持cookie,也可以使用session來記錄用戶狀態(tài)。
 
應(yīng)用場景
 
通過session累計用戶數(shù)據(jù)。例如,一個未登錄用戶訪問了京東網(wǎng)站,這個時候京東對其下發(fā)了一個 cookie,假設(shè)cookie的名字叫做abc,那這條記錄就是 abc=001,同時京東的后臺也生成了一個 session id, 它的值也為 001, 001 這個客戶在 2 點(diǎn)、 3 點(diǎn)、 4 點(diǎn)分別添加了三件商品到購物車,這樣后臺也記錄了 session id 為 001的用戶的購物車?yán)锩嬉呀?jīng)有三件商品,并且只要每次客戶端 cookie 帶上來的值里面包含session id,后臺都能夠展示相應(yīng)的數(shù)據(jù),如果這個時候,在瀏覽器里面清空 cookie,cookie 數(shù)據(jù)消失之后,后臺和客戶端無法建立對應(yīng)關(guān)系,購物車的數(shù)據(jù)就會失效了。
 
通過session實(shí)現(xiàn)單點(diǎn)登錄。一個用戶帳號成功登錄后,在該次session還未失效之前,不能在其他機(jī)器上登錄同一個帳號。登錄后將用戶信息保存到session中,如果此時在另外一臺機(jī)器上一個相同的帳號請求登錄,通過遍歷(遍歷的意思就是將所有session都查看一遍)Web服務(wù)器中所有session并判斷其中是否包含同樣的用戶信息,如果有,在另一臺機(jī)器上是不能登錄該帳號的。
 

免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)送郵件至:operations@xinnet.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

免費(fèi)咨詢獲取折扣

Loading