H5緩存

1.‘古老的前端緩存方法’cookie

cookie是我們所熟知的释牺,也作cookies晶疼。cookie是存儲在用戶本地終端上的數(shù)據(jù)称开。某些網(wǎng)站為了點別用戶身份八毯,進行session跟蹤而存儲在本地終端上的數(shù)據(jù)皮获。cookie存儲通常是進過加密處理的焙蚓,它可以存放大概4k左右的內(nèi)容;我們可以設(shè)置cookie的有效期洒宝,有效期內(nèi)緩存一直存在购公,默認的緩存的時間是瀏覽器關(guān)閉即銷毀梆造。而且我們“可愛的小甜點”緩存在每次的http請求和響應(yīng)中都會被添加到請求頭陌知,所以會造成一定的流量損失。

應(yīng)用:判斷用戶是否登錄活合,針對登錄過的用戶将宪,服務(wù)端會在他登錄時插入一段加密過的唯一辨識單一用戶的辨識碼绘闷,下次只要讀取這個值就可以判斷當前用戶是否登錄過。

示例:


2.webStorage

webStorage分為localStorage和sessionStorage较坛。

localStorage是沒有時間限制的數(shù)據(jù)存儲印蔗。把數(shù)據(jù)通過localStorage存在本地,如果不手動清除的話丑勤,存的數(shù)據(jù)會一直在這個地方存著华嘹,直到“天荒地老,悍ň海枯石爛.....”localStaorage一般用于管理購物車耙厚、存儲H5游戲的一些數(shù)據(jù)强挫。

sessionStorage是會話存儲,針對當前會話所做的一個存儲薛躬。它的生命周期相對較短俯渤,當瀏覽器關(guān)閉的時候,它的生命就終結(jié)了型宝。當我們遇到一些內(nèi)容特別多的表單為了優(yōu)化用戶體驗八匠,我們可能要把表單頁面拆分成多個子頁面,然后按步驟引導用戶填寫趴酣,這個時候我們一般會使用sessionStorage梨树。

相對于cookie,webStorage的存儲空間要大的多岖寞,可以存儲大約5MB左右的內(nèi)容抡四,而且該存儲不會與服務(wù)端發(fā)生通訊。

示例:


cookie與webStorage對比圖


注意:不是什么數(shù)據(jù)都適合放在 Cookie仗谆、localStorage 和 sessionStorage 中的指巡。使用它們的時候,需要時刻注意是否有代碼存在 XSS 注入的風險胸私。因為只要打開控制臺厌处,你就隨意修改它們的值,也就是說如果你的網(wǎng)站中有 XSS 的風險岁疼,它們就能對你的 localStorage 肆意妄為阔涉。所以千萬不要用它們存儲你系統(tǒng)中的敏感數(shù)據(jù)。

前邊介紹的方法主要用于存一些簡單的鍵值數(shù)據(jù)捷绒,如果我們需要處理大量結(jié)構(gòu)化數(shù)據(jù)的存儲的時候該怎么辦瑰排?h5為我們提供了一些其他方法,web SQL暖侨、IndexedDB

3.web SQL DataBase

webSQL :使用 SQL 來操縱客戶端數(shù)據(jù)庫的 API椭住,這些 API 是異步的,規(guī)范中使用的方言是SQLlite字逗。

Web SQL Database 規(guī)范中定義的三個核心方法

openDatabase:這個方法使用現(xiàn)有數(shù)據(jù)庫或新建數(shù)據(jù)庫來創(chuàng)建數(shù)據(jù)庫對象

transaction:這個方法允許我們根據(jù)情況控制事務(wù)提交或回滾

executeSql:這個方法用于執(zhí)行SQL 查詢

但是在W3C官網(wǎng)上已經(jīng)聲明該規(guī)范已經(jīng)停止了京郑,也就是說這是一個廢棄的標準。葫掉。些举。。

示例:


4. IndexedDB

IndexedDB 是一種可以讓你在用戶的瀏覽器內(nèi)持久化存儲數(shù)據(jù)的方法俭厚,是 WebSQL 數(shù)據(jù)庫的取代品户魏。MDN上完整的API文檔可供學習。IndexedDB存儲是按索引進行存取刪除的,所以如果要從緩存中查找數(shù)據(jù)只能是根據(jù)索引來查找叼丑,而沒辦法根據(jù)內(nèi)容進行全局搜索关翎。

IndexedDB有一定的局限性,以下情況不適合使用IndexedDB

a. 全球多種語言混合存儲鸠信。國際化支持不好纵寝。需要自己處理。

b. 和服務(wù)器端數(shù)據(jù)庫同步症副。你得自己寫同步代碼店雅。

c. 全文搜索政基。


注意贞铣,在以下情況下,數(shù)據(jù)庫可能被清除:

a. 用戶請求清除數(shù)據(jù)沮明。

b. 瀏覽器處于隱私模式辕坝。最后退出瀏覽器的時候,數(shù)據(jù)會被清除荐健。

c. 硬盤等存儲設(shè)備的容量到限酱畅。

d. 不正確的

e. 不完整的改變.


示例:參考文章http://www.tfan.org/using-indexeddb/



上邊所述的存儲都是做一些本地存儲,有時候我們還會開發(fā)一些網(wǎng)頁應(yīng)用江场,對 HTTP響應(yīng)做緩存的纺酸。這時候application Cache、Cache storage就是比較專業(yè)的緩存技術(shù)址否。我們前邊的所做的本地存儲只是把數(shù)據(jù)存儲在本地餐蔬,如果服務(wù)端數(shù)據(jù)有變化的話,我們需要手動寫函數(shù)去檢測更新佑附。而application Cache樊诺、Cache storage做了緩存后,每次加載頁面音同,會自動問詢服務(wù)端是否有更新词爬,如有就會自動更新數(shù)據(jù)。

5.application Cache

application cache是應(yīng)用緩存機制权均,他使我們的應(yīng)用可以離線緩存顿膨。

使用應(yīng)用緩存可以得到以下益處:

a. 離線瀏覽: 用戶可以在離線狀態(tài)下瀏覽網(wǎng)站內(nèi)容。

b. 更快的速度: 因為數(shù)據(jù)被存儲在本地叽赊,所以速度會更快恋沃。

c. 減輕服務(wù)器的負載: 瀏覽器只會下載在服務(wù)器上發(fā)生改變的資源。

但是因為這個問題比較多蛇尚,因為采用mainfest芽唇,所以你將不能清空緩存,只能進行更新,如果更新到錯誤的版本匆笤,而又沒辦法調(diào)到正確的頁面的話研侣,就悲劇了。炮捧∈睿。現(xiàn)在官網(wǎng)已經(jīng)發(fā)文已廢棄咆课,該特性已經(jīng)從web標準中刪除了末誓。

6.cache storage

CacheStorage是在ServiceWorker的規(guī)范中定義的,它用來存儲 Response 對象的书蚪。也就是說用來對 HTTP響應(yīng)做緩存的喇澡。對于Service Worker,它的運行不走JavaScript線程殊校,在瀏覽器背后默默運行晴玖,脫離瀏覽器窗體,因此为流,window以及DOM都是不能訪問的呕屎;專為異步API設(shè)計,同步API是不能在Service Worker里使用敬察;Service Worker要求必須是https協(xié)議的秀睛,但本地開發(fā)也弄個https協(xié)議是很麻煩的,好在還算人性化莲祸,Service Worker在http://localhost或者http://127.0.0.1這種本地環(huán)境下的時候也是可以跑起來的蹂安。

示例:參考https://mdn.github.io/sw-test/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市虫给,隨后出現(xiàn)的幾起案子藤抡,更是在濱河造成了極大的恐慌,老刑警劉巖抹估,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缠黍,死亡現(xiàn)場離奇詭異,居然都是意外死亡药蜻,警方通過查閱死者的電腦和手機瓷式,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來语泽,“玉大人贸典,你說我怎么就攤上這事□饴眩” “怎么了廊驼?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵据过,是天一觀的道長。 經(jīng)常有香客問我妒挎,道長绳锅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任酝掩,我火速辦了婚禮鳞芙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘期虾。我一直安慰自己原朝,他們只是感情好,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布镶苞。 她就那樣靜靜地躺著喳坠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宾尚。 梳的紋絲不亂的頭發(fā)上丙笋,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機與錄音煌贴,去河邊找鬼。 笑死锥忿,一個胖子當著我的面吹牛牛郑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敬鬓,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼淹朋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了钉答?” 一聲冷哼從身側(cè)響起础芍,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎数尿,沒想到半個月后仑性,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡右蹦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年诊杆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片何陆。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡晨汹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贷盲,到底是詐尸還是另有隱情淘这,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站铝穷,受9級特大地震影響朦乏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氧骤,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一呻疹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧筹陵,春花似錦刽锤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至语稠,卻和暖如春宋彼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仙畦。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工输涕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慨畸。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓莱坎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寸士。 傳聞我的和親對象是個殘疾皇子檐什,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容