將用戶信息保存到session、Cookie?

分析:
區別
一、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
二、cookie不是很安全,別人能夠分析存放在本地的COOKIE並進行COOKIE欺騙(可設置:httponly)
   考慮到安全應當使用session。
三、session會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能
   考慮到減輕服務器性能方面,應當使用COOKIE。
四、單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie。

抉擇
Session機制:
瞭解web開發的人都知道session,實際上是客服端存放了一個sessionID,當客戶端請求服務端的時候,會把這個sessionID
發送給服務端,服務端會根據這個sessionID去內存中(通常狀況下,session都是存儲在內存裏)查找到對應的session;固然用戶若是禁用了Cookie,那你的session還能用嘛?

若是遇到了集羣,則可能須要使用memcached session manager 複製session,好比Nginx複雜均衡tomcat,這個時候若是session夠多,可想而知服務器承受的壓力。

模仿session機制:
將用戶信息保存到session、Cookie?個人想法是,將用戶的的ID,相似Session的SessionID,本身加密(可以使用AES加密),存放在cookie中,固然狀態是httponly!
當客戶端訪問服務端的時候,進行解密,首先去內存(本身使用的是memcached)中查詢此用戶。若是沒有,則去DB中查詢並保存在內存中,固然用戶更新什麼的,就去把內存中的用戶信息更新了便可。
memcached爲一臺單獨的服務器,這樣就解決了session複製的問題,直接去內存中取便可。能夠省掉多少內存消耗!!!也避免了session風暴唄。
那有人會問memcached要是掛了,信息不就全完蛋了,固然,這個東西確實可能會發生,這隻能給你說可使用memcached集羣。畢竟討論的主題不在此處!web

相關文章
相關標籤/搜索