项目介绍

pheongap混合应用,跨平台,做应用加工厂提供应用模板编辑器~

本地应用,完全是模拟IOS,安卓原生应用的实现,所以支持14种手势,所有PPT动画,视觉差效果,等等功能组合。。。

这是IDE的功能设置

HTML5本地数据库就是用SQLite,这是我们应用的数据库

通过数据动态生成页面

这个应用有30页,有些应用上千页,所以页面全是动态生成的,只会维持在2-3页,

这里用到了模拟多线程任务 - - ,用于实现无缓冲翻页,效果还是不错


一个页面涉及N多数据的的查询,可能关联很多表,几十上百条记录,如何优化?

数据查询方式

1:sql数据

拼sql语句是不行的,你可以试试一条SQL语句耗费的时间是多少?  基本上1条语句就是100毫秒了,安卓下面实测

现在一个页面就可能存在几百条数据的关联,那么直接通过语句查询是行不通的

2:缓存哈希

通过HTML5的executeSql查询出来的是一个,SQLResultSetRowList 类型的 rows 是数据集的“行”,

rows 有两个属性:length、item ,故获取查询结果的第一行列名为name的值 :result.rows.item(0).name

那么如果缓存数据为哈希的格式,这样就不需要查询数据了,每次找内存中的缓存即可了

就是这样

var data = {}
each(result,function(r,index){
data[r.id] = r.item(index);
})

但是忽略一个问题,浏览器分配给每一个应用的内存是有限的,所以这样缓存的表数据一多,内存会溢出,应用直接崩

3:缓存数据集

目前使用的就是html5返回的缓存数据集SQLResultSetRowList了,因为我们可以直接result.rows.item(0) 通过索引下表找到对应的数据

这样只需要算出数据库中每一个id对应的下标索引就可以大大加快查询数据了


目前项目三种都尝试过,目前使用的最后一种数据查找,项目越来越大,这样数据结构的问题也很严峻

如果你有做SPA应用,如果有用HTML5数据交互,希望能帮助到你

移动混合应用HTML5数据查询优化的更多相关文章

  1. SQL优化----百万数据查询优化

    百万数据查询优化 1.合理使用索引 索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率.现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构.索引的使用要恰到好处,其使用原则如下: ...

  2. Vertica数据查询优化

    vertica是惠普公司推出的列式分布式数据库,在OLAP领域有其独到的地方,目前社区版免费,但是只能存放1T的数据.我在工作中维护的bi系统后端就是使用的vertica数据库,平时也经常需要对于数据 ...

  3. SQL大数据查询优化

    常写的SQL可能主要以实现查询出结果为主,但如果数据量一大,就会突出SQL查询语句优化的性能独特之处.一般的数据库设计都会建索引查询,这样较全盘扫描查询的确快了不少.下面总结下SQL查询语句的几个优化 ...

  4. HTML5数据推送SSE原理及应用开发

    JavaScript表达行为,CSS表达外观,注意HTML既表达结构(逻辑结构),又表达内容(数据本身)通常需要更新数据时,并不需要更新结构,正是这种不改变组织结构仅改变数据的诉求,推动了数据拉取和数 ...

  5. 理解HTML5数据推送应用开发问题

    一.数据推送 SSE是一种允许服务端向客户端推送新数据(通常称作数据推送)的HTML5技术.那么,究竟什么是数据推送?它与我们可能用过的其他技术有什么不同呢? 让我先来回答什么不是数据推送.数据推送有 ...

  6. HTML5数据存储方案data与jQuery数据存储方案$.data()的区别

    我们先看下$.fn.data()的使用,这个和$.data()是不一样的,前者是和某个jquery对象相关,后者则是全局方法.主要有data()和removeData()这2个实例方法.通过下面的例子 ...

  7. mysql大数据查询优化

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  8. 【MySQL】海量量数据查询优化

    参考资料: mysql处理海量数据时的一些优化查询速度方法:http://www.cnblogs.com/lingiu/p/3414134.html mysql千万级大数据SQL查询优化:http:/ ...

  9. c# 解决读取Excel混合文本类型,数据读取失败的解决方法

    错误重现: ----------------------------------------------------------------------- 在导入Excel读取数据时,其中的一个字段保 ...

随机推荐

  1. 【转】Oracle索引HINT的使用

    转自:Oracle索引HINT的使用       存储在数据库中数据的分布情况开发人员或管理员比Oracle优化器更加的清楚,在优化器不能作出最有查询路径选择的情况下,使用HINT(提示)人为的固定查 ...

  2. Shell运算符:Shell算数运算符、关系运算符、布尔运算符、字符串运算符等

    摘自:http://c.biancheng.net/cpp/view/2736.html

  3. C语言中函数声明实现的位置

    在学习C语言的时候我遇到了这么个事情,因为之前先学习的C#,在C#编译器中,函数的声明位置不会影响编译的结果,但是在C语言中却发生了错误 先看一段代码: #include <stdio.h> ...

  4. bootstrap之伪元素

    bootstrap之伪元素 参考地址:http://www.cnblogs.com/keyi/p/5943178.html http://www.runoob.com/css/css-pseudo-e ...

  5. asp.net mvc添加多条数据到数据库

    mvc的视图太强大了,个人刚刚接触.(初级菜鸟,懂的不多,往大神们指点)需求是,客户点击添加按钮弹出一个框选择产品后直接添加到表单中,在表单可以自己更改产品的数量,以及一些信息.mvc表单提交的时候只 ...

  6. 使用mybatis-generator生成代码

    文档地址: ​http://mbg.cndocs.tk/index.html ​ 以下是一个简单的配置内容. 一.在maven配置文件中添加mybatis-generator插件 1 2 3 4 5 ...

  7. Codeforces Round #361 (Div. 2) D

    D - Friends and Subsequences Description Mike and !Mike are old childhood rivals, they are opposite ...

  8. ajax的一些笔试面试题

    1. 什么是ajax,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么是ajax: AJAX是“Asynchronous JavaScript and XML”的缩写.他是指一种创建交互式网页 ...

  9. OpenCV 3.1 Set Camera Resolution 设置相机的分辨率

    在OpenCV中,有强大的处理相机事件的api,但是貌似没有直接获取相机的最大分辨率的函数,通过属性CV_CAP_PROP_FRAME_HEIGHT和CV_CAP_PROP_FRAME_WIDTH直接 ...

  10. Android事件分发传递

    一.与触摸事件有关的几个方法 boolean dispatchTouchEvent(MotionEvent ev); 接收到触摸事件时,是否分发事件到下面的View 返回true:分发触摸事件 返回f ...