Cookie,Session ,Application是什麼?

目錄

Cookie

  • 本身用於瀏覽器和服務端通訊
  • 存放在客戶端中,可以設置過期時間

缺點:

  • 大小限制,4k
  • 不確定性:用戶可以刪除cookie或禁用
  • 安全風險:可僞造修改

推薦閱讀:cookie localStorage sessionStorage

Session

什麼是Session?

當用戶通過瀏覽器訪問服務器時,服務器本身並不知道是誰來訪問的(http協議是無狀態的)。
於是,服務器就給每個訪問者進行臨時編號(即,給每個訪問者創建對應的session會話)。
與此同時,爲了方便一段時間內訪問者都可以對服務器“自由訪問”,服務器就把臨時編號(sessionID)傳給訪問者(存儲在客戶端的cookie中,當瀏覽器關閉時釋放;或跟在URL地址後面)
在這段時間內,需要進行請求驗證時,服務器就可以直接拿着訪問者的臨時編號進行驗證。

注意: 這個瀏覽器指的是瀏覽器窗口,或者是瀏覽器的子窗口。意思就是,只允許當前這個session對應的瀏覽器訪問,就算是在同一個機器上新啓的瀏覽器也是無法訪問的。而另外一個瀏覽器也需要記錄session的話,就會再啓一個屬於自己的session

關於Session

  1. 每個用戶訪問服務器時,都會在服務端創建一個相對應的Session,分配的SessionID是唯一的,用來標識不同的用戶
  2. 爲了獲取更快的存儲速度,服務端可以把Session保存在內存中(當然也可以存儲在文件中,數據庫中),因此放在Session中的信息應該精簡,避免內容過於複雜,當大量用戶訪問時可能導致內存溢出
  3. Session是具有生命週期的,當超過了這段時間,Session就會失效
  4. Session生成後,只要用戶繼續訪問,服務器就會更新該Session的最後訪問時間,並維護該Session
  5. 當用戶訪問過多時,隨之創建的Session也會變多,爲了防止內存溢出的問題,服務器會把長時間沒有訪問的Session給刪除掉

Session的傳遞方式

  1. 通過Cookie實現
    sessionID放在Cookie裏面;
    臨時Cookie會在當前瀏覽器關閉時消失,而Session也是當瀏覽器關閉時消失的。因此可以用臨時Cookie存放,而且保存的sessionID不會重複,因爲Cookie裏存儲的是鍵值對,是獨一無二的,相同的會被覆蓋
  2. 通過URL重寫實現
    如果瀏覽器不支持Cookie的時候,就可以使用URL重寫的方式實現
    即,在url地址後面追加sessionID
  3. 使用HTTP請求頭來傳輸
    比如標準的Authorization,也可以自定義,如 X-Auth-SessionID 等。但是這個請求頭瀏覽器不會像 cookie 一樣自動攜帶,需要手工處理。

Application

  • Application用於保存所有用戶的公共數據信息,存放在服務端中
  • Application適用於任何大小的數據
  • Application保存期貫穿於整個應用程序的生命期
  • Application適用於所有用戶,是所有用戶公用一個

注意: 當網站訪問量大的時候會產生嚴重的性能瓶頸.因此最好不要用此對象保存大的數據集合
舉例: 在網頁上顯示在線人數

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章