1. 程式人生 > >【技術乾貨】老程式設計師親繪漫畫:1分鐘讀懂Session會話機制

【技術乾貨】老程式設計師親繪漫畫:1分鐘讀懂Session會話機制

昨日說起前嗅是996中的一股清流,可是前嗅沒火,大師和圓仔卻一夜之間就火了?很多人紛紛留言,要看這倆人互懟、講故事......

其實,程虛圓和宮成師的原型真的來源於前嗅,漫畫的前身為公司的老程式設計師和小實習生。老程式設計師經驗豐富,小實習生積極認真,老程式設計師為了儘快把“圓仔”領進門,開始大開腦洞親繪漫畫,講解技術乾貨。

如大家所想看到的,倆人今天又開戰了。

大師:最近技術有進步嗎?

圓仔(得意地嚼著小餅乾):我上週看了前嗅的公眾號《小心手裡的“小餅乾”,它可能洩露你的隱私》,知道了Cookie是啥。

大師(削他):知道了Cookie就好意思上班吃餅乾了?Session知道是啥意思不?

圓仔(舉手):我英語四級沒過,等我查查?

大師(吐血):哈哈,小老弟。Session,在網路應用中,就是“會話控制”。

圓仔:哦,這就是你張狂的理由?

“Cookie可以分為會話快取(session cookie)和持久快取(persistent cookie)兩種快取模式”

大師:好吧,老哥給你詳細講講為啥張狂。Session 主要是儲存特定使用者會話所需的屬性及配置資訊的檔案。

圓仔:這不就和cookie一樣了嘛?都是用來儲存使用者資訊的。

大師:別急,其實它們之間還是有些區別的。cookie和session都是儲存狀態的方法,其主要差異在cookie用在客戶端儲存,Session通過伺服器來儲存的。我們可以把伺服器和客戶端瀏覽器的一系列動作稱為一個Session,而Session是伺服器端為客戶端所開闢的儲存空間,其中儲存的資訊就是為了儲存狀態。

圓仔:請原諒我的大腦像紙一樣空白,我要回家好好用功了。

(圓仔學習歸來,一副瞭然於胸的樣子~)

圓仔:對比起Cookie,Session 是儲存在伺服器端的會話,使用者沒辦法修改Session的檔案內容,相對會安全一些,並且不像 Cookie 那樣有儲存長度的限制。

大師:小老弟,可以啊。

圓仔:總的來說,Session是在服務端儲存的一個數據結構,用來跟蹤使用者的狀態,這個資料可以儲存在叢集、資料庫、檔案中。Cookie是客戶端儲存使用者資訊的一種機制,用來記錄使用者的資訊。

圓仔:用比較標準的話說,就是Session檔案的建立和使用都是在伺服器端,瀏覽器沒有許可權獲得session檔案,瀏覽器只能通過獲得的Session ID來發送“請求”獲取相關資訊。對於使用“瀏覽器”的你來說,這些都是不可見的。

大師:前嗅就是需要你這樣有學習能力的小夥子!

圓仔(陷入猖狂自戀狀態):嘿嘿嘿,我還知道怎麼快速的把Session清除掉,只要關掉頁面,關閉瀏覽器,Session就直接在伺服器端刪除了。

大師:哼哼,你以為關網頁關瀏覽器就行了?舉個栗子吧。瀏覽網站相當於去逛超市的過程,區別就在於在逛網站這個“超市”之前,它會自動識別“身份資訊”給你生成一張類似於“電子會員卡(Session)”的東西,它會在你逛超市的期間一直伴隨著你。

圓仔:這個和Session有什麼關係嘞?

大師:你想想,如果你不去主動登出“會員卡”的話,超市至少在“會員卡”有效期內肯定是不會主動幫你登出的,只有這張“會員卡”到有效期後自動失效。你的說法只是網上關於Session的一種誤解,千萬不要信以為真,哼哼。

大師:這回明白了嗎,再來複述一遍吧,看看你到底都聽懂了多少關於cookie和session之間的差別。

“Cookie是存放在使用者的本地裝置中,可以被解析進行cookie欺詐,同時還存在數量和記憶體上的限制。而session則是儲存在伺服器端,比較安全,但是會佔用伺服器效能,因此會存在