国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

客戶端(瀏覽器端)數據存儲技術概覽

開發 前端
在客戶端(瀏覽器端)存儲數據有諸多益處,最主要的一點是能快速訪問(網頁)數據。(以往)在客戶端有五種數據存儲方法,而目前就只有四種常用方法了(其中一種被廢棄了)。

在客戶端(瀏覽器端)存儲數據有諸多益處,最主要的一點是能快速訪問(網頁)數據。(以往)在客戶端有五種數據存儲方法,而目前就只有四種常用方法了(其中一種被廢棄了):

  • Cookies
  • Local Storage
  • Session Storage
  • IndexedDB
  • WebSQL (被廢棄)

Cookies

Cookies 是一種在文檔內存儲字符串數據最典型的方式。一般而言,cookies 會由服務端發送給客戶端,客戶端存儲下來,然后在隨后讓請求中再發回給服務端。這可以用于諸如管理用戶會話,追蹤用戶信息等事情。

此外,客戶端也用使用 cookies 存儲數據。因而,cookies 常被用于存儲一些通用的數據,如用戶的***項設置。

Cookies 的 基本CRUD 操作

通過下面的語法,我們可以創建,讀取,更新和刪除 cookies:

  1. // Create 
  2.  
  3. document.cookie = "user_name=Ire Aderinokun";   
  4.  
  5. document.cookie = "user_age=25;max-age=31536000;secure"
  6.  
  7.   
  8.  
  9. // Read (All
  10.  
  11. console.log( document.cookie ); 
  12.  
  13.   
  14.  
  15. // Update 
  16.  
  17. document.cookie = "user_age=24;max-age=31536000;secure"
  18.  
  19.   
  20.  
  21. // Delete 
  22.  
  23. document.cookie = "user_name=Ire Aderinokun;expires=Thu, 01 Jan 1970 00:00:01 GMT"

 

Cookies 的優點

  • 能用于和服務端通信
  • 當 cookie 快要自動過期時,我們可以重新設置而不是刪除

Cookies 的缺點

  • 增加了文檔傳輸的負載
  • 只能存儲少量的數據
  • 只能存儲字符串
  • 潛在的 安全問題
  • 自從有 Web Storage API (Local and Session Storage),cookies 就不再被推薦用于存儲數據了

瀏覽器支持

所有主流瀏覽器均支持 Cookies.

Local Storage

Local Storage 是 Web Storage API 的一種類型,能在瀏覽器端存儲鍵值對數據。Local Storage 因提供了更直觀和安全的API來存儲簡單的數據,被視為替代 Cookies 的一種解決方案。

從技術上說,盡管 Local Storage 只能存儲字符串,但是它也是可以存儲字符串化的JSON數據。這就意味著,Local Storage 能比 Cookies 存儲更復雜的數據。

Local Storage 的 基本CRUD 操作

通過下面的語法,我們可以創建,讀取,更新和刪除 Local Storage:

  1. // Create 
  2.  
  3. const user = { name'Ire Aderinokun', age: 25 }   
  4.  
  5. localStorage.setItem('user', JSON.stringify(user)); 
  6.  
  7.   
  8.  
  9. // Read (Single) 
  10.  
  11. console.log( JSON.parse(localStorage.getItem('user')) ) 
  12.  
  13.   
  14.  
  15. // Update 
  16.  
  17. const updatedUser = { name'Ire Aderinokun', age: 24 }   
  18.  
  19. localStorage.setItem('user', JSON.stringify(updatedUser)); 
  20.  
  21.   
  22.  
  23. // Delete 
  24.  
  25. localStorage.removeItem('user'); 

 

Local Storage 的優點

相比于Cookies:

  • 其提供了更直觀地接口來存儲數據
  • 更安全
  • 能存儲更多數據

Local Storage 的缺點

  • 只能存儲字符串數據(直接存儲復合數據類型如數組/對象等,都會轉化成字符串,會存在存取數據不一致的情況):
  1. localStorage.setItem('test',1); 
  2.  
  3. console.log(typeof localStorage.getItem('test'))  //"string" 
  4.  
  5.   
  6.  
  7. localStorage.setItem('test2',[1,2,3]); 
  8.  
  9. console.log(typeof localStorage.getItem('test2'))  //"string" 
  10.  
  11. console.log(localStorage.getItem('test2'))  //"1,2,3" 
  12.  
  13.   
  14.  
  15. localStorage.setItem('test3',{a:1,b:2}); 
  16.  
  17. console.log(typeof localStorage.getItem('test3'))  //"string" 
  18.  
  19. console.log(localStorage.getItem('test3'))  //"[object object]" 
  20.  
  21.   
  22.  
  23. //為避免存取數據不一致的情形,存儲復合數據類型時進行序列化,讀取時進行反序列化 
  24.  
  25. localStorage.setItem('test4', JSON.stringify({a:1,b:2})); 
  26.  
  27. console.log(typeof localStorage.getItem('test4'))  //"string" 
  28.  
  29. console.log(JSON.parse(localStorage.getItem('test4')))  //{a:1,b:2} 

 

瀏覽器支持

IE8+/Edge/Firefox 2+/Chrome/Safari 4+/Opera 11.5+(caniuse)

Session Storage

Session Storage 是 Web Storage API 的另一種類型。和 Local Storage 非常類似,區別是 Session Storage 只存儲當前會話頁(tab頁)的數據,一旦用戶關閉當前頁或者瀏覽器,數據就自動被清除掉了。

Session Storage 的 基本CRUD 操作

通過下面的語法,我們可以創建,讀取,更新和刪除 Session Storage:

  1. // Create 
  2.  
  3. const user = { name'Ire Aderinokun', age: 25 }   
  4.  
  5. sessionStorage.setItem('user', JSON.stringify(user)); 
  6.  
  7.   
  8.  
  9. // Read (Single) 
  10.  
  11. console.log( JSON.parse(sessionStorage.getItem('user')) ) 
  12.  
  13.   
  14.  
  15. // Update 
  16.  
  17. const updatedUser = { name'Ire Aderinokun', age: 24 }   
  18.  
  19. sessionStorage.setItem('user', JSON.stringify(updatedUser)); 
  20.  
  21.   
  22.  
  23. // Delete 
  24.  
  25. sessionStorage.removeItem('user'); 

 

優點,缺點和瀏覽器支持

和 Local Storage 一樣

IndexedDB

IndexedDB 是一種更復雜和全面地客戶端數據存儲方案,它是基于 JavaScript、面向對象的和數據庫的,能非常容易地存儲數據和檢索已經建立關鍵字索引的數據。

在構建漸進式Web應用一文中,我已經介紹了怎么使用 IndexedDB 來創建一個離線優先的應用。

IndexedDB 的基本 CRUD 操作

注:在示例中,我使用了 Jake’s Archibald 的 IndexedDB Promised library, 它提供了 Promise 風格的IndexedDB方法

使用 IndexedDB 在瀏覽器端存儲數據比上述其它方法更復雜。在我們能創建/讀取/更新/刪除任何數據之前,首先需要先打開數據庫,創建我們需要的stores(類似于在數據庫中創建一個表)。

  1. function OpenIDB() {   
  2.  
  3.     return idb.open('SampleDB', 1, function(upgradeDb) { 
  4.  
  5.         const users = upgradeDb.createObjectStore('users', { 
  6.  
  7.             keyPath: 'name' 
  8.  
  9.         }); 
  10.  
  11.     }); 
  12.  

 

創建或者更新store中的數據:

  1. // 1. Open up the database 
  2.  
  3. OpenIDB().then((db) => {   
  4.  
  5.     const dbStore = 'users'
  6.  
  7.   
  8.  
  9.     // 2. Open a new read/write transaction with the store within the database 
  10.  
  11.     const transaction = db.transaction(dbStore, 'readwrite'); 
  12.  
  13.     const store = transaction.objectStore(dbStore); 
  14.  
  15.   
  16.  
  17.     // 3. Add the data to the store 
  18.  
  19.     store.put({ 
  20.  
  21.         name'Ire Aderinokun'
  22.  
  23.         age: 25 
  24.  
  25.     }); 
  26.  
  27.   
  28.  
  29.     // 4. Complete the transaction 
  30.  
  31.     return transaction.complete; 
  32.  
  33. }); 

 

檢索數據:

  1. // 1. Open up the database 
  2.  
  3. OpenIDB().then((db) => {   
  4.  
  5.     const dbStore = 'users'
  6.  
  7.   
  8.  
  9.     // 2. Open a new read-only transaction with the store within the database 
  10.  
  11.     const transaction = db.transaction(dbStore); 
  12.  
  13.     const store = transaction.objectStore(dbStore); 
  14.  
  15.   
  16.  
  17.     // 3. Return the data 
  18.  
  19.     return store.get('Ire Aderinokun'); 
  20.  
  21. }).then((item) => { 
  22.  
  23.     console.log(item); 
  24.  
  25. }) 

 

刪除數據:

  1. // 1. Open up the database 
  2.  
  3. OpenIDB().then((db) => {   
  4.  
  5.     const dbStore = 'users'
  6.  
  7.   
  8.  
  9.     // 2. Open a new read/write transaction with the store within the database 
  10.  
  11.     const transaction = db.transaction(dbStore, 'readwrite'); 
  12.  
  13.     const store = transaction.objectStore(dbStore); 
  14.  
  15.   
  16.  
  17.     // 3. Delete the data corresponding to the passed key 
  18.  
  19.     store.delete('Ire Aderinokun'); 
  20.  
  21.   
  22.  
  23.     // 4. Complete the transaction 
  24.  
  25.     return transaction.complete; 
  26.  
  27. }) 

 

如果你有興趣了解更多關于IndexedDB的使用,可以閱讀我的這篇關于怎么在漸進式Web應用(PWA)使用IndexedD。

IndexedDB 的優點

  • 能夠處理更復雜和結構化的數據
  • 每個’database’中可以有多個’databases’和’tables’
  • 更大的存儲空間
  • 對其有更多的交互控制

IndexedDB 的缺點

  • 比 Web Storage API 更難于應用

瀏覽器支持

IE10+/Edge12+/Firefox 4+/Chrome 11+/Safari 7.1+/Opera 15+(caniuse)

對比

 

客戶端有五種數據存儲方法對比

 

參考

An Overview of Client-Side Storage(https://bitsofco.de/an-overview-of-client-side-storage/) 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2011-05-24 16:47:20

數據存儲

2009-07-10 18:15:24

HTTP頭

2019-08-07 10:23:20

Cookie客戶端數據庫

2016-12-14 13:41:49

HTML 5瀏覽器VDI

2016-10-20 16:11:39

HtmlJavascript

2009-07-02 16:44:59

JSP獲取

2009-07-21 13:03:06

桌面虛擬化虛擬PC數據中心

2013-01-05 14:16:41

jQueryConditionizJS

2011-08-17 10:10:59

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2015-06-03 09:27:05

JavaScript客戶端檢測技術

2010-02-23 08:56:39

瘦客戶端

2010-05-31 10:11:32

瘦客戶端

2011-10-26 13:17:05

2011-03-24 13:00:31

配置nagios客戶端

2011-03-02 14:36:24

Filezilla客戶端

2010-12-21 11:03:15

獲取客戶端證書

2023-08-28 08:00:00

人工智能AgentGPT

2013-01-10 10:04:53

離線VDI客戶端hypervis

2011-03-21 14:53:36

Nagios監控Linux
點贊
收藏

51CTO技術棧公眾號

成视频年人免费看黄网站| cao在线视频| 国产精品丝袜xxxxxxx| 亚洲第一男人av| 无码人妻丰满熟妇区96| 欧美日韩第一| 欧美精品一区二区三区一线天视频 | 韩国av一区二区三区| 7777kkkk成人观看| 韩国中文字幕2020精品| 日本美女视频一区二区| 国产91精品久久久久久久| av在线免费网址| 有码一区二区三区| 精品一区二区成人免费视频 | 夜夜爽www精品| 欧美男人操女人视频| 亚洲精品99久久久久| 亚洲精品666| 成人黄色在线看| 动漫3d精品一区二区三区| 亚洲成人影音| 日韩精品在线观看网站| 国产香蕉在线| 自拍偷拍欧美精品| 亚洲av综合色区| 欧美三级特黄| 97香蕉久久超级碰碰高清版| 色是在线视频| 在线播放欧美女士性生活| 激情视频免费| 不卡的看片网站| 一区二区精品免费视频| 欧美成人一品| 91精品国产91久久久久久吃药| av资源在线看片| 欧美午夜免费电影| 桃乃木香奈av在线| 综合久久给合久久狠狠狠97色| 成人免费播放器| 国产一区激情在线| 亚洲黄色成人久久久| 亚洲精品婷婷| 国产精品久久波多野结衣| 精品国产精品久久一区免费式| 中文字幕在线成人| 182tv在线播放| 欧美高清视频在线高清观看mv色露露十八| 国产天堂在线观看| 亚洲欧美一区二区三区久本道91| 日韩免费毛片视频| 26uuu另类欧美| 国产免费黄视频| 成年人国产精品| 男女啪啪免费视频网站| 成人白浆超碰人人人人| 天天综合狠狠精品| 99国产精品| 国产区日韩欧美| 在线亚洲精品| 欧美性xxxx69| 青青草一区二区三区| 日本成人三级电影网站| 欧美一级网站| 亚洲精品日韩精品| 久久精品国产99久久6| 最新av在线免费观看| 九九九久久久精品| 在线观看日韩羞羞视频| 国产综合久久久久久鬼色 | 亚洲v天堂v手机在线| 欧美一区二区三区精品电影| 最近国产精品视频| 成人免费在线视频网站| 国产精品传媒精东影业在线| 91中文在线视频| 欧美一区免费| 国产日韩一区二区| 久久xxxx精品视频| 精品嫩模一区二区三区| 91美女蜜桃在线| 91国内视频| 在线中文字幕不卡| 美女的胸无遮挡在线观看| 日韩亚洲一区二区| 鲁大师精品99久久久| 91午夜理伦私人影院| 销魂美女一区二区三区视频在线| 天堂av一区二区| 国产91在线|亚洲| 9l视频白拍9色9l视频| 五月婷婷综合网| 国产盗摄在线观看| 伊人亚洲福利一区二区三区| 精品国产乱子伦一区二区| 国产免费一区视频观看免费 | 亚洲女人被黑人巨大进入| 精品国产亚洲一区二区三区在线 | 日韩一区二区免费电影| 色尼玛亚洲综合影院| 26uuu另类亚洲欧美日本老年| 91精品国产福利在线观看麻豆| 欧美日韩一区在线播放| 日韩国产精品久久久久久亚洲| 蜜臀av免费观看| 亚洲看片一区| 亚洲欧美日韩国产成人综合一二三区| 国产福利视频一区二区三区| 国产精品99久久久久久久女警| 久久av一区二区| 91在线观看一区二区| 在线视频三级| 国产偷国产偷亚洲清高网站| 精品中文字幕一区二区三区av| 欧美精品与人动性物交免费看| 菠萝蜜视频在线观看一区| 草久在线视频| 日韩精品免费在线| 欧美3p在线观看| 成人免费播放器| 色婷婷综合中文久久一本| 99热播精品免费| 99re资源| 久久男人中文字幕资源站| 日韩三级影院| 欧美激情一区二区三区在线视频观看 | 久久亚洲人体| 亚洲一区国产精品| 国产成人免费xxxxxxxx| 在线观看黄网| 色婷婷综合成人| 亚洲国产欧美日韩在线观看第一区| 日本欧美色综合网站免费| 亚洲国产aⅴ成人精品无吗| 欧美精品影院| 超级碰在线观看| 亚洲精品一区在线观看| 最新国产乱人伦偷精品免费网站| 久久久久久77777| 午夜伦理精品一区 | 成人午夜激情网| 亚洲视频一区二区在线观看| 国产日韩一区二区三免费高清| 日本丰满少妇黄大片在线观看| 日韩欧美久久一区| 国产午夜精品一区二区三区欧美| 你懂的在线视频| 91久久在线播放| 亚洲6080在线| 波多野结衣在线观看一区二区| wwwav91com| 欧洲美女7788成人免费视频| 国产精品国模大尺度视频| 黑人久久a级毛片免费观看| 奇米影视四色在线| 2019中文字幕在线| 亚洲精品乱码久久久久久久久 | 亚洲天堂av资源在线观看| 欧洲精品一区二区三区久久| 一本色道久久综合狠狠躁篇怎么玩| 激情欧美一区二区| 中文在线中文资源| www.激情网| 中文字幕视频一区二区在线有码| 岛国精品在线播放| 日韩成人精品一区二区三区| 国产xxxxx在线观看| 欧美精品videos性欧美| 亚洲日本va午夜在线影院| 日本道不卡免费一区| 国产传媒视频在线观看| 91在线无精精品一区二区| 欧美日韩一区高清| 日本亚洲欧美天堂免费| 高清不卡亚洲| 久久精品影视大全| 欧美一二三视频| 日韩欧美国产成人| 老司机午夜精品视频在线观看| 免费成人直播| 四虎4hutv紧急入口| 91福利视频导航| 亚洲国产精品久久久久秋霞蜜臀| 成人网在线免费视频| 四虎影视精品| 亚洲男人网站| 日本不卡一区| 精品视频9999| 高跟丝袜一区二区三区| 久久久久久一区二区| 亚洲人成网站在线在线观看| 看黄色免费网站| 欧美一区免费视频| 欧美猛交免费看| 在线看不卡av| 成人一区二区三区在线观看| 国内精品久久久久久久影视简单 | 日韩视频在线你懂得| 成人黄色国产精品网站大全在线免费观看| 国产精品视频一区二区三区综合|