问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

介绍HTML5几种存储方式

发布网友 发布时间:2022-04-22 22:27

我来回答

2个回答

懂视网 时间:2022-05-12 03:56

本篇文章给大家带来的内容是关于HTML5中五种存储方式的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

h5之前,存储主要是用cookies。cookies缺点有在请求头上带着数据,大小是4k之内。主Domain污染。

主要应用:购物车、客户登录

对于IE浏览器有UserData,大小是64k,只有IE浏览器支持。

目标

  • 解决4k的大小问题

  • 解决请求头常带存储信息的问题

  • 解决关系型存储的问题

  • 跨浏览器

  • 1、本地存储localstorage

    存储方式:

    以键值对(Key-Value)的方式存储,永久存储,永不失效,除非手动删除。

    大小:

    每个域名5M

    支持情况:

    384421139-5c335f4c888f1_articlex.png

    注意:IE9 localStorage不支持本地文件,需要将项目署到服务器,才可以支持!

    检测方法:

    if(window.localStorage){ 
     alert('This browser supports localStorage'); 
    }else{ 
     alert('This browser does NOT support localStorage'); 
    }

    常用的API:

    getItem //取记录

    setIten//设置记录

    removeItem//移除记录

    key//取key所对应的值

    clear//清除记录

    1404283283-5c33621c6c972_articlex.png

    存储的内容:

    数组,图片,json,样式,脚本。。。(只要是能序列化成字符串的内容都可以存储)

    2、本地存储sessionstorage

    HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localStorage 则会一直保存。

    3、离线缓存(application cache)

    本地缓存应用所需的文件

    使用方法:

    ①配置manifest文件

    页面上:

    <!DOCTYPE HTML> 
    <html manifest="demo.appcache"> ... 
    </html>

    Manifest 文件:

    manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。

    manifest 文件可分为三个部分:

    ①CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存

    ②NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存

    ③FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)

    完整demo:

    CACHE MANIFEST 
    # 2016-07-24 v1.0.0 /theme.css 
    /main.js 
    
    NETWORK: 
    login.jsp 
    
    FALLBACK: 
    /html/ /offline.html

    服务器上:manifest文件需要配置正确的MIME-type,即 "text/cache-manifest"。

    如Tomcat:

    <mime-mapping> 
     <extension>manifest</extension> 
     <mime-type>text/cache-manifest</mime-type> </mime-mapping>

    常用API:

    核心是applicationCache对象,有个status属性,表示应用缓存的当前状态:

    0(UNCACHED) : 无缓存, 即没有与页面相关的应用缓存

    1(IDLE) : 闲置,即应用缓存未得到更新

    2 (CHECKING) : 检查中,即正在下载描述文件并检查更新

    3 (DOWNLOADING) : 下载中,即应用缓存正在下载描述文件中指定的资源

    4 (UPDATEREADY) : 更新完成,所有资源都已下载完毕

    5 (IDLE) : 废弃,即应用缓存的描述文件已经不存在了,因此页面无法再访

    问应用缓存

    相关的事件:

    表示应用缓存状态的改变:

    checking : 在浏览器为应用缓存查找更新时触发

    error : 在检查更新或下载资源期间发送错误时触发

    noupdate : 在检查描述文件发现文件无变化时触发

    downloading : 在开始下载应用缓存资源时触发

    progress:在文件下载应用缓存的过程中持续不断地下载地触发

    updateready : 在页面新的应用缓存下载完毕触发

    cached : 在应用缓存完整可用时触发

    Application Cache的三个优势:

    ① 离线浏览

    ② 提升页面载入速度

    ③ 降低服务器压力

    离线缓存与传统浏览器缓存区别:

    1、离线缓存是针对整个应用,浏览器缓存是单个文件

    2、离线缓存断网了还是可以打开页面,浏览器缓存不行

    3、离线缓存可以主动通知浏览器更新资源

    4、Web SQL

    关系数据库,通过SQL语句访问

    Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。

    支持情况:

    Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。

    核心方法:

    ①openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。

    ②transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。

    ③executeSql:这个方法用于执行实际的 SQL 查询。

    打开数据库:

    var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024,fn); 
    //openDatabase() 方法对应的五个参数分别为:数据库名称、版本号、描述文本、数据库大小、创建回调

    执行查询操作:

    var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); 
    db.transaction(function (tx) { 
     tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)'); 
    });

    插入数据:

    var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); 
    db.transaction(function (tx) { 
     tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)'); 
     tx.executeSql('INSERT INTO WIN (id, name) VALUES (1, "winty")'); 
     tx.executeSql('INSERT INTO WIN (id, name) VALUES (2, "LuckyWinty")'); 
    });

    读取数据:

    db.transaction(function (tx) { 
     tx.executeSql('SELECT * FROM WIN', [], function (tx, results) { 
     var len = results.rows.length, i; 
     msg = "<p>查询记录条数: " + len + "</p>"; 
     document.querySelector('#status').innerHTML += msg; 
    
     for (i = 0; i < len; i++){ 
      alert(results.rows.item(i).name ); 
     } 
    
     }, null); 
    });

    由这些操作可以看出,基本上都是用SQL语句进行数据库的相关操作,如果你会MySQL的话,这个应该比较容易用。

    点我看更多教程!

    5、IndexedDB

    索引数据库 (IndexedDB) API(作为 HTML5 的一部分)对创建具有丰富本地存储数据的数据密集型的离线 HTML5 Web 应用程序很有用。同时它还有助于本地缓存数据,使传统在线 Web 应用程序(比如移动 Web 应用程序)能够更快地运行和响应。

    异步API:

    在IndexedDB大部分操作并不是我们常用的调用方法,返回结果的模式,而是请求——响应的模式,比如打开数据库的操作

    1820317020-5c336310d3b28_articlex.png

    这样,我们打开数据库的时候,实质上返回了一个DB对象,而这个对象就在result中。由上图可以看出,除了result之外。还有几个重要的属性就是onerror、onsuccess、onupgradeneeded(我们请求打开的数据库的版本号和已经存在的数据库版本号不一致的时候调用)。这就类似于我们的ajax请求那样。我们发起了这个请求之后并不能确定它什么时候才请求成功,所以需要在回调中处理一些逻辑。

    关闭与删除:

    function closeDB(db){ 
     db.close(); 
    } function deleteDB(name){ 
     indexedDB.deleteDatabase(name); 
    }

    数据存储:

    indexedDB中没有表的概念,而是objectStore,一个数据库中可以包含多个objectStore,objectStore是一个灵活的数据结构,可以存放多种类型数据。也就是说一个objectStore相当于一张表,里面存储的每条数据和一个键相关联。

    我们可以使用每条记录中的某个指定字段作为键值(keyPath),也可以使用自动生成的递增数字作为键值(keyGenerator),也可以不指定。选择键的类型不同,objectStore可以存储的数据结构也有差异。 

    热心网友 时间:2022-05-12 01:04

    HTML5 提供了两种在客户端存储数据的新方法:..两者都是仅在客户端(即浏览器)中保存,不参与和服务器的通信;
    localStorage - 没有时间*的数据存储,第二天、第二周或下一年之后,数据依然可用。
    如何创建和访问 localStorage:

    <script type="text/javascript">
        localStorage.lastname="Smith";
        document.write(localStorage.lastname);
    </script>

    下面的例子对用户访问页面的次数进行计数:

    <script type="text/javascript">
        if (localStorage.pagecount){
            localStorage.pagecount=Number(localStorage.pagecount) +1;
        }
        else{
            localStorage.pagecount=1;
        }
        document.write("Visits "+ localStorage.pagecount + " time(s).");
    </script>

    sessionStorage - 针对一个 session 的数据存储,当用户关闭浏览器窗口后,数据会被删除。
    创建并访问一个 sessionStorage:

    <script type="text/javascript">
        sessionStorage.lastname="Smith";
        document.write(sessionStorage.lastname);
    </script>

    下面的例子对用户在当前 session 中访问页面的次数进行计数:

    <script type="text/javascript">
        if (sessionStorage.pagecount){
            sessionStorage.pagecount=Number(sessionStorage.pagecount) +1;
        }
        else{
            sessionStorage.pagecount=1;
        }
        document.write("Visits "+sessionStorage.pagecount+" time(s) this session.");
    </script>

    sessionStorage 、localStorage的区别
    共同点:都是保存在浏览器端,且同源的。
    区别:数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
    作用域不同,sessionStorage不在不同的浏览器窗口*享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    早孕验血报告单怎么看 测试早孕的方法 联想电脑退货注意什么 公务员裸眼视力必须0.3吗 山东农业大学机电学院科研成果 山东农业大学机械与电子工程学院实验研究 山东农业大学机电工程学院有哪些重点实验室和研究中心? 复发性无菌性脑膜炎的诊断 电子简历自我评价 电子信息技术专业个人简历自我评价 楚留香手游9月7日更新公告 天机阁指点江山功能开放-手游资讯-安族网 &#x200B;描述 cookies、sessionStorage 和 localStorage 的区别? 浏览器支持的Localstorage最大支持多大,数据是储存在哪里 拼多多怎么设置拒绝菜鸟驿站收货? sessionstorage,localstorage和cookie之间的区别 sessionStorage localStorage 和 cookie 之间的区别和使用 ...并且如何用cookie的方法设置其一分钟后过期? html5 的 localStorage 可否设置数据的时效时间? 台式电脑主机开机刚启动就停而且反复启动是啥原因? 电脑无法开机,开机得时候电源风扇断断续续的转.转一下就停,过几秒又开始转 各位大神,台式电脑开机过后使用时主机有断断续续的吱吱声,异声,是什么情况,不是新买的 电脑主机开机以后,电源附近除了比较有规律的电流声音以外,还有一些断断续续吱吱呀呀的电流声,咋回事 电脑开机时候反复启动,每次都是通电几秒钟就断电,然后停一两秒钟后再次通电启动,反复如此,一直不开机 电脑断断续续充电怎么解决? 电脑主机断断续续的吱吱响,是怎么回事? 电脑主机通电一会就不通电是怎么回事? 台式电脑开机通电断断续续,风扇转一下就停,插上电源,让它一直自动 电脑主机启动一下又灭一直反复? 电脑开机供电断断续续的,开不了机 电脑开不了机主机一会响起来一会停止断断续续怎么回事 电脑主机断断续续的 打不开 怎么回事? cookies,sessionStorage和localStorage的区别 cookie和localstorage的区别 ...cookies,sessionStorage 和 localStorage 的区别 通信技术工程师主要是干什么的?它的就业前景如何? 吉林大学通信工程学院的师资力量 通信工程师证很多人考吗?通过率怎么样? 杭州电子科技大学通信工程学院的师资力量 什么是通信工程师? 重庆大学通信工程学院的师资队伍 重庆大学微电子与通信工程学院师资力量怎么样? 北京邮电大学信息与通信工程学院的师资队伍 重庆通信工程学院的师资队伍 通信工程师有分级别的吗? 哈尔滨工程大学信息与通信工程学院的师资力量 通信工程师证书什么公司需要? 长沙理工大学的通信工程专业的师资及就业前景怎样? 通信工程师职称评定有哪些条件? 东北林业大学的通信工程的师资如何??? 支付宝收款成功后钱在哪里? 支付宝二维码收款的钱在哪里看得到?