HTML5存储总结

作者: 红姑娘 | 来源:发表于2017-06-14 11:21 被阅读56次

    h5的存储方式有如下几种

    1、web storage

    • 本地存储local storage
    • 本地存储session storage

    2、离线缓存(application cache)
    3、Web SQL
    4、IndexedDB

    1、web storage

    存储形式:key-->value
    存储内容:数组、json、图片、脚本、样式等可以序列化为字符串的内容
    使用场景:利用本地数据,减少网络传输,弱网高延迟低带宽,尽量数据本地化
    大小限制:每个域名5M

    ** 本地存储local storage - 没有时间限制的数据存储 **

    域内安全、永久保存,除非手动删除

    if(typeof(Storage) !== "undefined") {
    
              // localStorage.setItem(键名,键值)      存储数据信息到本地
              // localStorage.getItem(键名)      读取本地存储的信息
              // localStorage.removeItem(键名)   删除本地存储的信息
              // localStorage.clear()        清空所有存储的信息
        var value = "张三";
        //存储
        localStorage.setItem("key", value);
        //取值
        var name = localStorage.getItem("key");
        console.log(name);
        //删除
        localStorage.removeItem("key");
        //清空localStorage信息
        localStorage.clear()
    } else {
    
        console.log("浏览器不支持web Storage")
    }
    

    ** 本地存储session storage - 针对一个 session 的数据存储 **

    短期保存,重启浏览器、关闭页面或新开页面时失效

    if(typeof(Storage) !== "undefined") {
    
     //sessionStorage.setItem(键名,键值)       存储数据信息到本地
     //sessionStorage.getItem(键名)       读取本地存储的信息
     //sessionStorage.removeItem(键名)    删除本地存储的信息
     //sessionStorage.clear ()        清空所有存储的信息
    
        var value = "张三";
        //存储
        se.setItem("key", value);
        //取值
        var name = localStorage.getItem("key");
        console.log(name);
        //删除
        localStorage.removeItem("key");
        //清空localStorage信息
        localStorage.clear()
    } else {
    
        console.log("浏览器不支持web Storage")
    }
    

    2、离线缓存(application cache)

    使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本。

    HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。

    应用程序缓存为应用带来三个优势:

    • 离线浏览 - 用户可在应用离线时使用它们
    • 速度 - 已缓存资源加载得更快
    • 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

    所有主流浏览器均支持应用程序缓存,除了 Internet Explorer。

    未完待续...

    请参考
    http://www.w3school.com.cn/html5/html_5_app_cache.asp

    3、Web SQL

    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);
      });
    

    具体代码可参考我的另一篇关于数据库文章
    链接如下:
    http://www.jianshu.com/p/ba69532c0b00

    4、IndexedDB

    http://www.cnblogs.com/dolphinX/p/3415761.html
    http://www.cnblogs.com/dolphinX/p/3416889.html

    H5之前

    主要使用cookies

    数据大小:作为存储容器,cookie的大小限制在4KB左右。
    安全性问题:由于在HTTP请求中的cookie是明文传递,有安全性隐患。
    网络负担:cookie会被附加在每个HTTP请求中,在HttpRequest 和HttpResponse的header中都是要被传输的,所以无形中增加了一些不必要的流量损失。

    兼容问题:

    本地存储是H5的新贵,但是对于老、旧的浏览器来说怎么办?那就不用老古董浏览器呗,或者使用cookie作为替代。因为大多使用localStorage是用来存储字符串的,在其他编译型的语言看来,存储字符串能做些什么,但在JavaScript身上,旧大放光彩,可以存储JSON格式的字符串来扩展应用,可以存储类名变量值等等信息再通过eval()来感受使用JS的快感。既然localStorage是存储字符串的,那么在老古董浏览器上,可以通过使用Cookies来做替代方案并做好域内安全。

    相关文章

      网友评论

        本文标题:HTML5存储总结

        本文链接:https://www.haomeiwen.com/subject/ziftqxtx.html