sencha touch提升搜索性能的建议

本文探讨了在移动端应用中优化搜索性能的方法,包括分离搜索方法和界面渲染、按用户使用频率排序、适当中断查询、减少代码量及按字符串位数匹配搜索等策略。通过实践案例展示如何实现这些优化措施,显著提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    编译成对应平台的软件后,部分手机搜索性能变得特别慢。基本上输入一个字都要停顿一下,用户体验变的特别差。(在浏览器中运行时没有这种情况 )

建议:

            a.  分离搜索方法和界面渲染。(store中也有自带查询方法,感觉效果不理想)

      b.  以用户使用频率最高的字段排序.

            c.  适当的中断查询。( 以满足列表可见的最大条数来中断查询,如只看到15条,那就判断搜索到的数组达到时中断)

            d.  尽量减少搜索方法内代码量。

            e. 按字符串的位数匹配搜索

我的代码:

	var pageSize = store.getPageSize(), //页面显示数据条数
            tempArray = [], //临时存在查询到的值
	    textVal = "123", //搜索的字符串
	    textValLen = txt.length, //查询数组的长度
            listData = cmp.getCsource().slice(0), //根据老数据生成相同新的数组(防止操作数据时有影响)
            switchFlag = false; //阀门开关标识, false 默认关闭状态(这里就要用到排序的好处了
for (var i = 0; i < listData.length; i++) {
                var fitem = listData[i];
                if (fitem.fidentifier.substring(0,textValLen) == textVal || // 过滤条件1(获取数组字段中字符串与搜索的字符串长度相同的值来比较)
                    fitem.fidentifierPy.substring(0,textValLen) == textVal // 过滤条件2) {
                    switchFlag = true; //记录搜索到的值, true 打开阀门
                    tempArray.push(fitem);
                } else {
                    if (switchFlag) { //打开阀门后,再碰到没有找到匹配的情况就结束遍历
                        break;
                    }
                }
                if (pageSize == tempArray.length) { //达到满足页面显示结束遍历
                    break;
                }
            }

注:

使用switchFlag阀门标识的前提条件只针对数组某一个字段查询,上面的描述如果有不正确的地方,还请大家指证出来。我会尽快改掉,让其他人少走点弯路。

友情推荐测试更改后效率:

console.time('timerName');

// 要测试执行时间的 JavaScript 代码
console.timeEnd('timerName');   //这个太强大了,谁用谁喜欢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值