版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第詳解JS瀏覽器儲存目錄引言CookieCookie是什么Cookie生成方式Cookie的應(yīng)用場景Cookie的缺點解決方法LocalStorage特點使用示例使用場景SeesionStorage特點使用場景Cookie、LocalStorage和SessionStorage之間的區(qū)別作用域的不同生命周期的不同總結(jié)
引言
隨著對前端的了解越來越深入,了解到了很多種瀏覽器的存儲方案,如Cookie、LocalStorage等,哪這些存儲方案有何異同,分別的適用場景又是什么呢。
Cookie
Cookie的來源
Cookie被創(chuàng)造出來的本意并不是本地儲存,而是為了辨別用戶身份。眾所周知,Http協(xié)議是無狀態(tài)的,也就是說你每一次發(fā)送給服務(wù)器的請求對于服務(wù)器來說都是孤立的,服務(wù)器不知道這這些請求來自于誰。比如你向購物車?yán)锩嫣砑恿艘恍┥唐?,但是?dāng)發(fā)送結(jié)賬請求的時候服務(wù)器懵了,我怎么知道你是誰,你買了什么呢。而使用Cookie之后,服務(wù)器就可以通過查看Cookie來判斷發(fā)送用戶,一定程度上Cookies可以說是請求的身份證??梢愿嬖V服務(wù)器請求發(fā)送自誰。
Cookie是什么
百聞不如一見,直接來看看Cookie長啥樣
這是百度首頁使用的Cookie,如你所見,Cookie是以Name-Value鍵值對儲存在瀏覽器中的,其中Value又是明顯經(jīng)過了加密的數(shù)據(jù)。
Cookie生成方式
Cookie是所屬于域名的,還是百度首頁的Cookie,通過Domain屬性可以得知前兩個Cookie是屬于.的
每個域名只能設(shè)置與訪問到自己域名下的Cookie,比如無法訪問Domain為的Cookie。但是子域名可以讀取父域名設(shè)置的Cookie,比如截圖中就讀取到了Domain='.'的Cookie,通過手動設(shè)置Domain可以設(shè)置父域名的Cookie,比如可以設(shè)置Domain=''這樣*.所有二級域名也能讀取到它設(shè)置的Cookie
//
document.cookie='age=20;domain=.'
//此時所有二級域名可以直接讀取到這個Cookie
Cookie的生成方式分為服務(wù)器端生成和瀏覽器端生成。
服務(wù)器端-通過設(shè)置httpresponseheader中的set-cookie
我們可以通過響應(yīng)頭里的Set-Cookie指定要存儲的Cookie值。當(dāng)請求返回瀏覽器的時候瀏覽器就會按照header中的set-cookie值設(shè)置Cookie。默認(rèn)情況下,Domain被設(shè)置為設(shè)置Cookie頁面的主機名,當(dāng)然我們也可以手動設(shè)置Domain的值。
Set-Cookie:id=a3fWa;
瀏覽器端-js中可以通過document.cookie可以讀寫cookie,以鍵值對的形式展示
document.cookie="id=a3fWa"
document.cookie='age=20;domain=.'
Cookie的應(yīng)用場景
既然Cookie的作用就是告訴服務(wù)器請求來自于誰,那么最主要的作用就是保持用戶登陸態(tài)(記住密碼),除此之外還可以記錄用戶瀏覽數(shù)據(jù),進行廣告推送和前文提到的購物車等。
Cookie的缺點
缺點其實在前文中就很顯而易見了
不夠大
Cookie會隨著每一次請求發(fā)送,這就注定了Cookie必定會有嚴(yán)格的大小限制,每一個Cookie的大小被限制在了4kb,值得注意的是4kb指的是一個Name-Value的大小,而并不是說這個域名可以設(shè)置的Cookie總大小只有4kb
性能缺陷
Cookie是跟隨著域名的,會隨著每一個同域名請求發(fā)送,但是其實很大一部分請求,比如說圖片等靜態(tài)資源的請求是完全用不著Cookie的,雖然每個Cookie只有4kb但是積少成多也會帶來巨大的資源浪費。
我們可以把靜態(tài)資源放到CDN上去,這時候圖片域名就和主站域名不相同了,就不會附帶發(fā)送Cookie
不夠安全
正如上文直接打開控制臺就可以看到Cookie一樣,Cookie雖然通過編碼進行了加密,但在Http傳輸中是明文傳輸,腳本也可以很輕松的獲取到Cookie,非常容易被破解。
在服務(wù)器端設(shè)置Cookie的時候附帶上HttpOnly標(biāo)記,這樣在瀏覽器端就無法使用document.cookie訪問到這個Cookie了
Set-Cookie:id=a3fWa;HttpOnly
標(biāo)記為Secure的Cookie只應(yīng)通過Https協(xié)議加密過的請求發(fā)送,但是即便如此也不應(yīng)該使用Cookie儲存敏感信息,因為Cookie有其固有的不安全性,這兩個標(biāo)記也無法提供確切的安全保障。
解決方法
既然Cookie有這么多缺點,有沒有什么一勞永逸的解決方法呢,那就是「專業(yè)的人做專業(yè)的事」。
用戶登錄態(tài)和部分用戶信息的存儲的工作交給Seesion---即Cookie只用來儲存一個用戶唯一標(biāo)識符,真正信息儲存在服務(wù)器端,使用Cookie作為SeesionID去服務(wù)器查找信息,這樣一來Cookie的容量限制,安全問題都引刃而解了,因為此時Cookie里面就是一串無意義的隨機碼。
本地儲存得工作交由html5中新增本地存儲的解決方案「WebStorage」,它又分成兩類:localStorage和SessionStorage,接下來就介紹這兩兄弟。
LocalStorage
特點
數(shù)據(jù)長時間保存,直到手動刪除為止
大小約為5M
和Cookie一樣,一個網(wǎng)站只能訪問和操作自己網(wǎng)站域名下的數(shù)據(jù)
僅在客戶端使用,和服務(wù)端無通信
接口封裝較好
使用鍵值對保存信息
同源窗口都可以訪問
使用示例
LocalStorage使用非常方便:
//設(shè)置數(shù)據(jù)
localStorage.setItem("key","value");
//讀取數(shù)據(jù)
letvalueLocal=localStorage.getItem("key");
使用場景
通過上面那些特性就可以看出LocalStorage非常適合用來做本地緩存,可以提高首屏加載速度。一些圖片等不會經(jīng)常改變的大資源也可以緩存下來,減少網(wǎng)絡(luò)請求。
SeesionStorage
保存時間為本次會話,也就是說窗口關(guān)閉就沒了
僅本窗口可以訪問,同源的其他窗口都不行大
小約為5M
sessionStorage更適合用來存儲生命周期和它同步的會話級別的信息。這些信息只適用于當(dāng)前會話,比如可以用來做表單數(shù)據(jù)的持久化,防止刷新后表單數(shù)據(jù)丟失
Cookie、LocalStorage和SessionStorage之間的區(qū)別
作用域的不同
這三者都遵循協(xié)議,即同協(xié)議,同域名,同端口下才能訪問和修改同一份數(shù)據(jù),唯一不同的就是SeesionStorage還要求在同一窗口。
生命周期的不同
Cookie可以手動設(shè)置過期時間,默認(rèn)就是本次會話時長,隨著窗口關(guān)閉而刪除,當(dāng)設(shè)置了過期時間時候,就會被儲存到硬盤中直到過期時間才被刪除
LocalStorage是持久化的本地儲存,除非你手動刪除,否則會一直存在
SessionStorage是會話級別的存儲,也是隨著窗口關(guān)閉而刪除。
總結(jié)
這就是幾種瀏覽器存儲方案,當(dāng)然還有我們應(yīng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山泉小學(xué)教學(xué)常規(guī)管理制度(3篇)
- 項目管理制度及格式范文(3篇)
- 茶室品茗活動策劃方案(3篇)
- 教育管理制度學(xué)習(xí)體會(3篇)
- 2026年河北唐山中心醫(yī)院腎內(nèi)科急聘英才1名考試參考試題及答案解析
- 2026年福建莆田礪志高級中學(xué)多學(xué)科教師招聘若干人備考考試題庫及答案解析
- 海南儋州市2026屆教育部直屬師范大學(xué)公費師范畢業(yè)生供需見面招聘24人(一)備考考試題庫及答案解析
- 2026北京航空航天大學(xué)集成電路科學(xué)與工程學(xué)院聘用編科研助理F崗招聘1人備考考試題庫及答案解析
- 2025湖南郴州市永興縣基層醫(yī)療衛(wèi)生單位招聘專業(yè)技術(shù)人員選崗15人備考考試題庫及答案解析
- 2026北京北化化學(xué)科技有限公司招聘15人考試備考題庫及答案解析
- 棄土場規(guī)范規(guī)章制度
- 2026年水下機器人勘探報告及未來五至十年深海資源報告
- 安徽省蕪湖市鳩江區(qū)2024-2025學(xué)年高一上學(xué)期期末考試生物試卷
- 公司干部調(diào)研方案
- 無糾紛自愿離婚協(xié)議書
- 四川省高等教育自學(xué)考試畢業(yè)生登記表【模板】
- 專題五 以新發(fā)展理念引領(lǐng)高質(zhì)量發(fā)展
- GB/T 22417-2008叉車貨叉叉套和伸縮式貨叉技術(shù)性能和強度要求
- GB/T 20145-2006燈和燈系統(tǒng)的光生物安全性
- GB/T 1.1-2009標(biāo)準(zhǔn)化工作導(dǎo)則 第1部分:標(biāo)準(zhǔn)的結(jié)構(gòu)和編寫
- 長興中學(xué)提前招生試卷
評論
0/150
提交評論