加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

超越Cookie:当今的客户端数据存储技术

发布时间:2019-08-07 13:17:00 所属栏目:编程 来源:疯狂的技术宅
导读:当 cookie 被初次引入时,它是赏识器生涯数据的独一方法。之后又有了许多新的选择:Web Storage API、IndexedDB 和 Cache API。那么 cookie 死了吗?我们来看看这些在赏识器中存储数据的技能。 Cookies Cookie 是由处事器发送或在客户端上配置的信息单元,

local storage 的另一个用例是在多个选项卡之间同步数据。通过为 'storage' 变乱添加侦听器,你可以在另一个选项卡或窗口中更新数据。

  1. window.addEventListener('storage', () => {  
  2.   console.log('local storage has been updated');  
  3. }); 

仅当在另一个文档中修改当地或会话存储时才会触发此变乱。也就是说,你无法在当前赏识器选项卡中侦听 storage 的变动。不幸的是,制止撰写本文时,存储变乱监听器尚未在 Chrome 上获得支持。

那么localStorage 和 sessionStorage 之间有什么区别呢?与 cookie 差异,Web Storage API 没有逾期或最大限期成果。假如行使 localStorage,除非手动删除,不然数据将无期限保存。你可以通过运行 localStorage.removeItem('key') 来删除单个键的值,可能通过运行 localStorage.clear() 破除全部数据。

假如行使 sessionStorage,则数据将仅一连到当前会话竣事。假如你没有配置最大时刻或逾期,它将被视为与 cookie 保持的方法相似。在任何一种环境下,假如用户行使隐身,当地存储都不会在会话之间保存数据。

IndexedDB

假如 cookie 和 localStorage 都不切合你的要求,尚有另一种选择:IndexedDB,一个赏识器内置的数据库体系。

当 localStorage 同步执行全部要领时,IndexedDB 会异法式用它们。这将会应承会见数据而不会阻塞别的代码。当你处理赏罚大量也许会见价钱奋发的代码时,这很是有效。

IndexedDB 在其存储的数据范例方面也具有更大的机动性。固然 cookies 和 localStorage 仅限于存储字符串,但 IndexedDB 可以存储可以通过“布局化克隆算法”复制的任何范例的数据。这包罗 Object、 Date、 File、 Blob、 RegEx 以及更多范例。

机能和机动性增进的弱点是 IndexedDB 的 API 更初级且更伟大。荣幸的是有很多库可以办理这个题目。

localForage 为 IndexedDB 提供了一个更简朴的相同 localStorage 的 API。 PouchDB 提供了一个可以离线的存储 API,可以与在线 CouchDB 数据库同步。 idb 是一个小型库,具有更简朴的基于 promise 的 API。 Dexie 添加了更强盛的查询 API,同时保持了精采的机能。按照你的行使环境尚有很多选择。

Cache API

另一种用于耐久数据的专用器材是 Cache API。固然它最初是为 service workers 建设的,但它可用于缓存任何收集哀求。 Cache API 果真了 Window.caches,它提供了生涯和检索相应的要领,应承你生涯可永久往后会见的 Requests 和 Responses 对。

譬喻,假如你想在从 API 哀求相应之前搜查赏识器的缓存以获取相应,则可以执行以下操纵:

  1. const apiRequest = new Request('https://www.example.com/items');  
  2. caches.open('exampleCache') // opens the cache  
  3.   .then(cache => {  
  4.     cache.match(apiRequest) // checks if the request is cached  
  5.       .then(cachedResponse =>   
  6.         cachedResponse || // return cachedReponse if available  
  7.         fetch(apiRequest) // otherwise, make new request  
  8.           .then(response => {  
  9.             cache.put(apiRequest, response); // cache the response  
  10.             return response;  
  11.           })  
  12.         })  
  13.     .then(res => console.log(res))  
  14. }) 

第一次运行代码时,它将缓存相应。随后每次城市缓存哀求,而且不会发出收集哀求。

总结

在赏识器上存储数据的每种要领都有其本身的用途。假如信息很小,很敏感,而且也许在处事器上行使,那么 cookie 就是最佳选择。假如要生涯更大且更不敏感的数据,Web Storage API 也许是更好的选择。

假如你规划存储大量布局化数据,IndexedDB 很是棒。 Cache API 用于存储来自 HTTP 哀求的相应。按照你的必要,有许多器材可供行使。

【编辑保举】

  1. 超具体的数据库主机及数据库日记网络总结
  2. 值得保举的四款优越图形数据库
  3. 后端措施员必备:MySQL数据库相干流程图/道理图
  4. 8月数据库排行:Oracle 节节攀升,PG 和 MongoDB 分数再现下跌
  5. 口试官:在行使MySQL数据库时,碰着一再数据怎么处理赏罚?
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读