使用 Storage 的 3 個(gè)理由

阿里的 Kissy 組件大賽進(jìn)行得火熱鸽嫂,筆者耐不住寂寞攜 Storage 投身其中米罚,斬獲了第四周「本周之星」。借著獲獎(jiǎng)的余溫相满,把 Storage 介紹給所有人层亿,如覺得不錯(cuò)請(qǐng) Star it

Storage 是一個(gè)跨終端立美、跨域的存儲(chǔ)組件:

  1. 十億級(jí)日調(diào)用次數(shù)的考驗(yàn)匿又,穩(wěn)定可靠
  2. 兼容 IE 6+,Chrome建蹄、Firefox碌更、Safari
  3. 不使用 Flash 方案,完美支持移動(dòng)瀏覽器
  4. 跨子域洞慎、主域的數(shù)據(jù)存取痛单,且不改寫 document.domain
  5. 支持 Object、Array 等復(fù)雜對(duì)象存取

原理圖

Storage 原理
Storage 原理

更多技術(shù)細(xì)節(jié)請(qǐng)移步此處劲腿。

理由 1:狀態(tài)保存向前端遷移

隨著頁面復(fù)雜性急劇增加旭绒,以及頁面間關(guān)聯(lián)性不斷提高,原來看似無關(guān)聯(lián)的多個(gè)頁面間某些狀態(tài)同步的需求在不斷增多谆棱。

狀態(tài)數(shù)據(jù)存放于后端帶來的直接問題是快压,海量的狀態(tài)信息給服務(wù)器無論是存儲(chǔ)容量還是網(wǎng)絡(luò) IO 都帶來了更大的挑戰(zhàn);前端存儲(chǔ)狀態(tài)的天然優(yōu)勢(shì)在于利用億級(jí)客戶端設(shè)備存儲(chǔ)狀態(tài)信息垃瞧,幾乎無網(wǎng)絡(luò)開銷(可能會(huì)有同步)蔫劣。簡(jiǎn)單計(jì)算下,10 億個(gè)客戶端按照每個(gè) 2MB 來算就是約 2000T个从。以天貓最近的某項(xiàng)目為例脉幢,狀態(tài)存儲(chǔ)在前端直接節(jié)約了200臺(tái)緩存服務(wù)器歪沃;另一個(gè)例子是,百度嫌松、google 的搜索歷史保存在前端沪曙,用戶輸入時(shí)可以快速地從本地存儲(chǔ)中提供搜索建議。

使用 cookie 存儲(chǔ)標(biāo)記狀態(tài)的行為由來已久萎羔,可以看做是前端保存狀態(tài)最簡(jiǎn)單的形態(tài)液走。受限 cookie 的長(zhǎng)度(4KB)以及 cookie 對(duì)網(wǎng)絡(luò)請(qǐng)求造成的額外負(fù)擔(dān),通常我們只用 cookie 保存那些開關(guān)量贾陷;Storage 使用 localStorage(IE6/7使用 userData)存儲(chǔ)數(shù)據(jù)缘眶,存儲(chǔ)容量遠(yuǎn)超 cookie,也不會(huì)加重網(wǎng)絡(luò)開銷髓废。

理由 2:跨域存儲(chǔ)

cookie 實(shí)際能存儲(chǔ)的數(shù)據(jù)很少(4KB)巷懈,并且考慮 到 cookie 數(shù)據(jù)會(huì)存在于 http 請(qǐng)求和響應(yīng) header 中加重了網(wǎng)絡(luò)開銷;flash storage 和 userData 都屬于「外掛」資源慌洪,對(duì)于前端而言是個(gè)黑箱顶燕,隨著移動(dòng)端的興起,這些技術(shù)也將退出歷史舞臺(tái)冈爹;localStorage 是 HTML5標(biāo)準(zhǔn)的一部分涌攻,無論在存儲(chǔ)上限還是對(duì)網(wǎng)絡(luò)的影響上都是更佳的選擇,目前幾乎支持所有的瀏覽器(IE6犯助、7除外)癣漆。

可是出于安全考慮,localStorage 存儲(chǔ)的數(shù)據(jù)不能跨子域訪問(即使修改 document.domain)剂买,userData 也有著類似的問題惠爽;Storage 將數(shù)據(jù)存儲(chǔ)在代理頁(b.com)所在域,宿主頁(a.com)通過與代理頁的跨域通信存儲(chǔ)數(shù)據(jù)瞬哼,跨域通信使用 postMessage(IE6/7使用window.name)不會(huì)改寫 document.domain婚肆。前端可能會(huì)用 document.domain 進(jìn)行環(huán)境判斷,而改寫 document.domain 在復(fù)雜系統(tǒng)中很容易產(chǎn)生隱患坐慰,這種隱患都是開關(guān)級(jí)別的通常比較嚴(yán)重较性;即使沒有這種隱患, document.domain 改寫也只能在同一個(gè)主域下進(jìn)行结胀,對(duì)于不同主域(如 a.com和b.com)的情況就無能為力了赞咙。

理由 3:跨終端

iOS 平臺(tái)不支持 Flash,隨著 Adobe 宣告不再支持 Flash 移動(dòng)端糟港,localStorage (及 DB 類存儲(chǔ)) 實(shí)際成了移動(dòng)端上唯一可用的存儲(chǔ)介質(zhì)攀操。 Storage 不使用 Flash 方案,一份代碼可運(yùn)行在 PC端和移動(dòng)端的瀏覽器上秸抚。

我的文章鏈接:https://github.com/luics/luics.github.com/issues/4

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末速和,一起剝皮案震驚了整個(gè)濱河市歹垫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颠放,老刑警劉巖排惨,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異碰凶,居然都是意外死亡暮芭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門痒留,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谴麦,“玉大人蠢沿,你說我怎么就攤上這事伸头。” “怎么了舷蟀?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵恤磷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我野宜,道長(zhǎng)扫步,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任匈子,我火速辦了婚禮河胎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘虎敦。我一直安慰自己游岳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布其徙。 她就那樣靜靜地躺著胚迫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唾那。 梳的紋絲不亂的頭發(fā)上访锻,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天,我揣著相機(jī)與錄音闹获,去河邊找鬼期犬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛避诽,可吹牛的內(nèi)容都是我干的龟虎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茎用,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼遣总!你這毒婦竟也來了睬罗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤旭斥,失蹤者是張志新(化名)和其女友劉穎容达,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垂券,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡花盐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菇爪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片算芯。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凳宙,靈堂內(nèi)的尸體忽然破棺而出熙揍,到底是詐尸還是另有隱情,我是刑警寧澤氏涩,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布届囚,位于F島的核電站,受9級(jí)特大地震影響是尖,放射性物質(zhì)發(fā)生泄漏意系。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一饺汹、第九天 我趴在偏房一處隱蔽的房頂上張望蛔添。 院中可真熱鬧,春花似錦兜辞、人聲如沸迎瞧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽夹攒。三九已至,卻和暖如春胁塞,著一層夾襖步出監(jiān)牢的瞬間咏尝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國打工啸罢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留编检,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓扰才,卻偏偏與公主長(zhǎng)得像允懂,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衩匣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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

  • HTTP cookie(也稱為web cookie,網(wǎng)絡(luò)cookie,瀏覽器cookie或者簡(jiǎn)稱cookie)是網(wǎng)...
    留七七閱讀 17,950評(píng)論 2 71
  • 前端開發(fā)面試知識(shí)點(diǎn)大綱: HTML&CSS: 對(duì)Web標(biāo)準(zhǔn)的理解蕾总、瀏覽器內(nèi)核差異粥航、兼容性、hack生百、CSS基本功:...
    秀才JaneBook閱讀 2,362評(píng)論 0 25
  • 背景在HTTP協(xié)議的定義中递雀,采用了一種機(jī)制來記錄客戶端和服務(wù)器端交互的信息,這種機(jī)制被稱為cookie蚀浆,cooki...
    時(shí)芥藍(lán)閱讀 2,364評(píng)論 1 17
  • 本文旨在加深對(duì)前端知識(shí)點(diǎn)的理解缀程,資料來源于網(wǎng)絡(luò),由本人(博客:http://segmentfault.com/u/...
    風(fēng)起云帆閱讀 331評(píng)論 0 0
  • 本文旨在加深對(duì)前端知識(shí)點(diǎn)的理解市俊,資料來源于網(wǎng)絡(luò)杨凑,由本人(博客:http://segmentfault.com/u/...
    還是那個(gè)西瓜閱讀 1,325評(píng)論 0 1