HTML5技术

H5 缓存机制浅析 移动端 Web 加载性能优化 - 第八号当铺(3)

字号+ 作者:H5之家 来源:H5之家 2016-03-03 19:21 我要评论( )

从 DomStorage 提供的接口来看,DomStorage 适合存储比较简单的数据,如果要存储结构化的数据,可能要借助 JASON了,将要存储的对象转为 JASON 字串。不太适合存储比较复杂或存储空间要求比较大的数据,也不适合存

从 DomStorage 提供的接口来看,DomStorage 适合存储比较简单的数据,如果要存储结构化的数据,可能要借助 JASON了,将要存储的对象转为 JASON 字串。不太适合存储比较复杂或存储空间要求比较大的数据,也不适合存储静态的文件等。

在 Android 内嵌 Webview 中,需要通过 Webview 设置接口启用 Dom Storage。

 

 

 

 

 

WebView myWebView = (WebView) findViewById(R.id.webview);

WebSettings webSettings = myWebView.getSettings();

webSettings.setDomStorageEnabled(true);

 

 

 

 

拿 Android 类比的话,Web 的 Dom Storage 机制类似于 Android 的 SharedPreference 机制。

2.3 Web SQL Database存储机制

H5 也提供基于 SQL 的数据库存储机制,用于存储适合数据库的结构化数据。根据官方的标准文档,Web SQL Database 存储机制不再推荐使用,将来也不再维护,而是推荐使用 AppCache 和 IndexedDB。

现在主流的浏览器(点击查看浏览器支持情况)都还是支持 Web SQL Database 存储机制的。Web SQL Database 存储机制提供了一组 API 供 Web App 创建、存储、查询数据库。

下面通过简单的例子,演示下 Web SQL Database 的使用。

 

 

 

 

    if(window.openDatabase){

      //打开数据库,如果没有则创建

      var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024);

       //通过事务,创建一个表,并添加两条记录

      db.transaction(function (tx) {

           tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');

           tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');

           tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');

       });

      //查询表中所有记录,并展示出来

     db.transaction(function (tx) {

         tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {

             var len = results.rows.length, i;

             msg = "Found rows: " + len + "";

             for(i=0; i" + results.rows.item(i).log + "";

             }

             document.querySelector('#status').innerHTML =  msg;

             }, null);

      });

}Status Message

 

 

 

 

将上面代码复制到 sql_database.html 中,用浏览器打开,可看到下面的内容。

 

ZSA5PB2.gif

 

官方建议浏览器在实现时,对每个 HOST 的数据库存储空间作一定限制,建议默认是 5MB(分 HOST)的配额;达到上限后,可以申请更多存储空间。另外,现在主流浏览器 SQL Database 的实现都是基于 SQLite。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler - 一线码农

    用惯了Task,你应该也需要了解它的内部调度机制TaskScheduler - 一线

    2017-04-29 10:01

  • 浓缩的才是精华:浅析GIF格式图片的存储和压缩 - 腾讯云技术社区

    浓缩的才是精华:浅析GIF格式图片的存储和压缩 - 腾讯云技术社区

    2017-04-07 15:08

  • 认识浏览器缓存 - TechSnail

    认识浏览器缓存 - TechSnail

    2017-04-03 09:02

  • 【实践】基于接口的插件机制 - 悠扬的牧笛

    【实践】基于接口的插件机制 - 悠扬的牧笛

    2017-01-18 14:03

网友点评
l