Cookie
意爲「甜餅」,是由W3C組織提出,最先由Netscape社區發展的一種機制。目前Cookie已經成爲標準,全部的主流瀏覽器如IE、Netscape、Firefox、Opera等都支持Cookie
Cookie的工做原理
因爲HTTP是一種無狀態的協議,服務器單從網絡鏈接上無從知道客戶身份。怎麼辦呢?就給客戶端們頒發一個通行證吧,每人一個,不管誰訪問都必須攜帶本身通行證。這樣服務器就能從通行證上確認客戶身份了
實際應用
- Cookie其實是一小段的文本信息。客戶端請求服務器,若是服務器須要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie。客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶狀態。服務器還能夠根據須要修改Cookie的內容
Session
是另外一種記錄客戶狀態的機制,不一樣的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上。這就是Session。客戶端瀏覽器再次訪問時只須要從該Session中查找該客戶的狀態就能夠了
- 若是說Cookie機制是經過檢查客戶身上的「通行證」來肯定客戶身份的話,那麼Session機制就是經過檢查服務器上的「客戶明細表」來確認客戶身份。Session至關於程序在服務器上創建的一份客戶檔案,客戶來訪的時候只須要查詢客戶檔案表就能夠了
二者的區別
- 數據存放位置不一樣:
cookie數據存放在客戶的瀏覽器上,即網頁緩存
session數據放在服務器上,即key-value形式,如redis 和mongoDB - 安全程度不一樣:
任何人可分析存放在本地的cookie,進行cookie欺騙,因此不是很安全,出於安全考慮的話選擇session - 性能使用程度不一樣:
session會在必定時間內保存在服務器上。訪問增多時,會比較佔用服務器的性能,考慮到減輕服務器性能方面,應當使用cookie【適具體使用場景而定!】 - 數據存儲大小不一樣:
單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie,而session則存儲於服務端,瀏覽器對其沒有限制
cookie 和session 的聯繫:
-
session是經過cookie來工做的redis
-
session和cookie之間是經過$_COOKIE[‘PHPSESSID’]來聯繫的瀏覽器
-
經過$_COOKIE[‘PHPSESSID’]能夠知道session的id,從而獲取到其餘的信息
緩存
- 謝謝閱讀,感恩有你