{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

SESSION在服務端是如何實現的?

fou7fou7 回答3 收藏1
收藏問題

3條回答

wums

wums

回答于2022-06-22 19:22

首先來說,Session存儲于服務器端,由于服務器上有很多Session,如果我們要操作某個Session就需要一個標識key,在Session機制中,這個標識Key就是SessionID

其實這很好理解,舉個例子:你把服務器當成一個教室,每個Session就是一個學生,如果你要找到某個學生,就需要知道這個學生的姓名。

請注意,不同WEB容器生成的SessionID名稱是不同的,比如說PHP的SessionID標識名為PHPSESSID,Java容器生成的SessionID標識名為JSESSIONID。

當瀏覽器第一次訪問服務器時,服務器端會生成一個Session(這里服務器端是可以控制Session是否自動生成的),然后將對應的SessionID存儲在客戶端的Cookie中,下次瀏覽器再發送請求時,就會將本地Cookie作為頭信息傳輸到服務器端,服務器端獲取到SessionID后就能找到與之對應的Session了。

那服務器端的Session是如何存儲的呢?

服務器端的Session存儲形式是不同的,主要存放形式有:

  • 內存中

  • 服務器File文件中

  • 數據庫中

  • NoSQL存儲等

在網站架構中,如果Session存在于內存中,這不利于集群環境下的Session共享互通,所以我們建議是將Session落地存儲,最好的方式就是放在NoSQL中存儲(如Redis),這樣性能最優。

以上就是我的觀點,對于這個問題大家是怎么看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我了解更多科技知識!

評論0 贊同0
  •  加載中...
songjz

songjz

回答于2022-06-22 19:22

一般都是利用cookie 中存一個sessionid

客戶端第一次連接服務端的時候 服務器生成一個唯一的sessionid 同時生成這個文件來存儲session的值 然后通過HTTP頭域中返回這個sessionid 然后客戶端拿到后寫到cookie中

后面每次HTTP交互客服端都帶上這個sessionid

sessionid 在服務端可以存成文件或者一個基于內存的hashtable

評論0 贊同0
  •  加載中...
cangck_X

cangck_X

回答于2022-06-22 19:22

瀏覽器在第一次訪問網站時,會生成一個sessionid,然后寫到cookie中,發回到瀏覽器,后續請求瀏覽器會自動帶上這個包含sessionid的cookie,服務端接收這個sessionid,然后去查找文件名為這個sessionid的文件,文件內容就是session的具體保存東西了。明白了這個原理的話,那么就可以擴展到數據庫,redis存儲session的方式了,他們都是以sessionid作為鍵,而且session也提供了自定義方式存儲,只要實現了他的接口就可以存儲到其他地方了。這也看出來了一個瀏覽器在同一個網站上只能登錄一個賬號,因為登錄過后會把賬號信息保存到session中,而同一個瀏覽器同一個網站只能有一個session,所以要么銷毀之前的session,生成新的,要么就用當前的。當然做的好的網站,在檢測到你已經登錄過的情況下,是不會允許你再次進入登錄頁面的,會直接給你跳轉到首頁。

評論0 贊同0
  •  加載中...

相關問題

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<