Cookie, LocalStorage 与 SessionStorage异同
不同
cookie由服務端生成,用于標識用戶身份;而兩個storage用于瀏覽器端緩存數據
一般情況下瀏覽器端不會修改 cookie,但會頻繁操作兩個storage
cookie有path概念,子路徑可以訪問父路徑 cookie,父路徑不能訪問子路徑 cookie
有效期: cookie在設置的有效期內有效,默認為瀏覽器關閉;sessionStorage在窗口關閉前有效,localStorage長期有效,直到用戶刪除
瀏覽器不能保存超過300個 cookie,單個服務器不能超過20個,每個 cookie不能超過4k。web storage大小支持能達到5M
共享:sessionStorage不能共享,localStorage在同源文檔之間共享, cookie在同源且符合path規則的文檔之間共享
如果保存了 cookie的話,http請求中一定會帶上;而兩個storage可以由腳本選擇性的提交
安全性方面, cookie中最好不要放置任何明文的東西。兩個storage的數據提交后在服務端一定要校驗
相同
三者都是鍵值對的集合
都會在瀏覽器端保存,有大小限制,同源限制
擴展閱讀
HTML5本地存儲——IndexedDB(一:基本使用)
cookie隔離
即優化方案中提到的靜態資源放在不帶cookie的域名下的解決方案
如果靜態文件都放在主域名下,那靜態文件請求的時候都帶有的cookie的數據提交給server的,非常浪費流量, 所以不如隔離開。 因為cookie有域的限制,因此不能跨域提交請求,故使用非主要域名的時候,請求頭中就不會帶有cookie數據, 這樣可以降低請求頭的大小,降低請求時間,從而達到降低整體請求延時的目的。 同時這種方式不會將cookie傳入Web Server,也減少了Web Server對cookie的處理分析環節, 提高了Web Server的http請求的解析速度。
參考資料
詳說 Cookie, LocalStorage 與 SessionStorage
為什么很多網站的靜態資源會使用獨立的域名?
總結
以上是生活随笔為你收集整理的Cookie, LocalStorage 与 SessionStorage异同的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RxJava 参考文档
- 下一篇: iOS 进阶 - RUNTIME 运行时