SESSION在服務端是如何實現的?
首先來說,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),這樣性能最優。
以上就是我的觀點,對于這個問題大家是怎么看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我了解更多科技知識!