除了缓存,浏览器还有哪些存储数据的方式?

一、简介

浏览器提供3种用于数据存储的 JavaScript APIs:cookie 、Web Storage API、IndexedDB。

二、cookie

cookie 是最早期 用于存储 键/值对 数据的解决方案,但由于各种安全、无法存储复杂数据等问题,请使用另外两种方案。

// cookie 使用方法
document.cookie = "name=oeschger";
document.cookie = "favorite_food=tripe";
alert(document.cookie);	// name=oeschger;favorite_food=tripe
三、Web Storage API

浏览器提供 Web Storage API,能够存储 键/值对 数据,可完全替代 cookie 的存储解决方案。有两种使用场景:

1、Window.localStorage

用于本地存储,浏览器关闭后,再重新打开数据依然可用。

<!-- index.html -->
<!DOCTYPE html>
<html lang='zh-CN'>
<head>
    <meta charset="utf-8">
    <title>存储数据</title>
    <script>
        console.log("读取:" + localStorage.getItem('bgcolor'));
        localStorage.setItem('bgcolor', 'red');
    </script>
</head>
<body>
    <h1>打开 console 看输出结果!</h1>
</body>
</html>
2、Window.sessionStorage

为每个网站建立一个独立存储区来存储数据,在页面会话结束时清除数据。

// 保存数据到 sessionStorage
sessionStorage.setItem('key', 'value');

// 从 sessionStorage 获取数据
let data = sessionStorage.getItem('key');

// 从 sessionStorage 删除保存的数据
sessionStorage.removeItem('key');

// 从 sessionStorage 删除所有保存的数据
sessionStorage.clear();
四、IndexedDB_API

IndexedDB 用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blobs)),使用索引实现高性能搜索。IndexedDB采用异步操作,避免阻塞应用程序。

1、扩展库

IndexedDB API 功能强大但过于复杂,可使用下面扩展库 降低开发难度。

名称

作用

把 IndexedDB、WebSQL、localStorage 封装成统一接口,如果浏览器不支持 IndexedDB 就退到 WebSQL 或 localStorage,保证存储功能的可用性。所有主流浏览器中都可用:Chrome,Firefox,IE 和 Safari(包括 Safari Mobile)。

IndexedDB 的扩展库,简单易用。

类似 MongoDB 的 IndexedDB 接口,支持 MongoDB 的大多数熟悉的过滤、投影、排序、更新和聚合功能。

一个带有 SQL 语法的 IndexedDB 包装器。

由 localstorage 支持的客户端内存中的 mongodb,通过 http 进行服务器同步。

用 IndexedDB 实现离线数据存储,并在联网后自动与 CouchDB 数据库进行数据同步。

IndexedDB 扩展库,大小只有 1.05k,但让 IndexedDB 变的非常容易使用。

IndexedDB扩展库,大小只有 600B,基于 Promise 用于存储 键/值对,需要存储复杂数据请选择上面的 idb 扩展库。

Lovefield 是一个用于 Web App 的关系型数据库,使用 JavaScript 编写,可以在不同的浏览器环境中运行,提供了类似 SQL 的 API,速度快、安全且易用。

五、参考文档

原文地址:https://cloud.tencent.com/developer/article/1925460

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)