CN106407374A - 一种适用于移动开发的高性能缓存方法 - Google Patents
一种适用于移动开发的高性能缓存方法 Download PDFInfo
- Publication number
- CN106407374A CN106407374A CN201610817072.4A CN201610817072A CN106407374A CN 106407374 A CN106407374 A CN 106407374A CN 201610817072 A CN201610817072 A CN 201610817072A CN 106407374 A CN106407374 A CN 106407374A
- Authority
- CN
- China
- Prior art keywords
- data
- cronpattern
- request
- parameter
- caching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000011161 development Methods 0.000 title claims abstract description 7
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 238000005538 encapsulation Methods 0.000 claims description 3
- 230000004807 localization Effects 0.000 claims description 2
- 238000010276 construction Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 7
- 238000001514 detection method Methods 0.000 description 5
- 230000007717 exclusion Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012356 Product development Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种适用于移动开发的高性能缓存方法,涉及移动端缓存处理技术领域,本发明基于ajax请求进行二次封装,根据url配置及请求参数动态构造缓存主键,通过websql实现网络数据本地化,并根据对应的缓存策略及匹配模式决定数据的最优抓取方式,大大加速前端响应。
Description
技术领域
本发明涉及移动端缓存处理技术,尤其涉及一种适用于移动开发的高性能缓存方法。
背景技术
某物流中心的物流移动端产品,需要对已读的主题明细页面提供离线浏览功能,主题明细页面支持按照时间、部门等参数条件来请求后端数据响应并刷新,其中部分主题明细需要按照年、月、日、时、分来定时请求或更新浏览数据并缓存,部分主题明细需要排除个别请求参数值的情况下刷新页面数据。
其次,对于定义的栏目、专题、主题等结构性数据,以及常量、枚举等只读数据可以按天或指定周期进行定时更新或请求,减少重复性的服务端数据请求。
另外,请求的数据中可能包含部分内网IP地址需要匹配替换为外网地址,部分富文本内容需要进行转义处理,并支持PC端调试功能。
发明内容
为了解决该问题,本发明提出了一种适用于移动开发的高性能缓存方法。根据缓存策略周期性或实时性抓取网络数据并更新缓存,结合WebSql实现数据本地化,提高前端请求响应速度,并对请求数据进行预处理及加工。
本发明的技术方案是:
一种适用于移动开发的高性能缓存策略,
1)缓存主键构建及懒加载
通过url及其data参数拼接并转义生成的缓存表唯一主键。当配置参数中的lazy==true时,请求参数将不参与主键的生成,避免部分请求因参数变化(或差异)而导致的重复后端数据请求。
2)cronPattern表达式
当cronPattern==true时,以本地缓存数据读取优先
当cronPattern==false 或 不填 或 格式不正确(检测数字、长度)时,以实时请求网络数据优先
当cronPattern=='yyyyMMddHHmmss' 时,以策略抓取数据(根据表达式计算下一更新周期,当前时间是否在更新周期内),例如:
cronPattern=='yyyyMMd1HHmmss': 一天更新一次,其它时间位不参与
cronPattern=='yyyyMMd1H1mmss': 一天更新一次,且今天的小时至少大于昨天缓存的1小时
cronPattern=='yyyyMMd1000000': 一天更新一次,且今天的时间点大于昨天的时间点
3)排他模式
在cronPattern=true的时候,根据参数值决定当前url请求是否被排除使用缓存策略,当currVars中的值出现在patterns中或匹配指定的regex表达式,当前url请求被排除并需要进行网络请求。
本发明的有益效果是
通过本专利技术的实现及运用,真实有效的解决了物流移动端产品开发中遇到的如下问题:
1:针对产品中定义的栏目、专题、主题等结构性数据获取,通过缓存策略指定更新策略为:cronPattern=='yyyyMMd1HHmmss'(一天更新一次,不考虑时间点),有效的避免了当天客户端页面刷新时重复性请求后端数据的请求。
2:满足部分主题明细页面在支持离线浏览的同时,对当月或当日的明细数据以网络优先抓取并加载。
3:基于数据库存储,通过WebSql操作,可以进行对缓存数据进行排序、分组等操作,并可以按需的进行批量删除操作。
4:支持数据预处理操作,解决内外网IP地址批量替换问题和特殊字符转义需要。
5:缓存策略调用缓存数据大大提高了页面响应速度及效率,提高了客户体验度。
附图说明
图1是本发明的流程图。
具体实施方式
下面对本发明的内容进行更加详细的阐述:
本发明以AngularJS插件化方式实现,并以JS闭包形式返回工具对象和缓存处理对象。
其中,工具对象包含如下功能:
1、基于WebSql API进行二次封装,提供完整的数据存储功能。
2、提供缓存配置对象,统一日志抬头、调试环境、数据库名称等信息。
3、基于AngularJS的$http方法及Promise JS进行二次封装,提供高性能AJAX请求调度。
另外,缓存处理对象提供如下功能:
1、提供缓存模块业务表数据初始化及清理API
2、提供网络数据抓取及存储API
3、提供本地缓存数据检测及读取API
4、提供支持缓存策略(懒加载、匹配模式、排他模式、数据预处理等)的数据抓取API。
5、支持缓存数据预处理(部分文本批量替换、特殊字符转义等)
本发明实现方案如下:
定义执行缓存方法的数据抓取方法:
var pull = function(opt) {......}
其中参数opt定义如下:
@param opt 网络请求参数(同$http请求参数)
{
type : '', //可选:get或post
url : '', //必填:请求路径(参与缓存k的构建)
params : { (参与缓存k的构建)
method : '', //必填:请求方法名
data : {}, //可选:请求参数(同后台交互时会json字符串化处理)
lazy : false //可选:params里面的参数是否参与缓存k值构建(默认false)
},
logTitle : '',//可选:日至输出前缀
cronPattern: 'yyyyMMddHHmmss',//可选:缓存策略(true:本地缓存为主,'yyyyMMddHHmmss':以策略为准,其它:实时为主其次本地缓存),字母已兼容大小写处理
excludePatterns : {//排他模式配置
currVars : [], //查询条件值:例如月份
patterns : [], //需要排除的查询条件
regex : '' //根据表达式排除
},
before : function(data){} //可选:成功从网络获取到数据时的入口函数(用于加工从网络获取的数据保存方式或内容)
}
缓存主键及懒加载:
通过url及其data参数拼接并转义生成的缓存表唯一主键。
懒加载:当配置参数中的lazy==true时,请求参数将不参与主键的生成,避免部分请求因参数变化(或差异)而导致的重复后端数据请求。
其方法定义如下:
var buildUrlID = function(url, params) {
var k = url;
if (params) {
if (params.method) {
k += (k.indexOf("?") > 0 ? "&" : "?") + "method="+ params.method;
}
if (params.data && !params.lazy) {
k += (k.indexOf("?") > 0 ? "&" : "?") + encodeURI(JSON.stringify(params.data));
}
}
return k;
};
cronPattern表达式:
当cronPattern==true时,以本地缓存数据读取优先
当cronPattern==false 或 不填 或 格式不正确(检测数字、长度)时,以实时请求网络数据优先
当cronPattern=='yyyyMMddHHmmss' 时,以策略抓取数据(根据表达式计算下一更新周期,当前时间是否在更新周期内)
//策略性加载,例如:
cronPattern=='yyyyMMd1HHmmss' : 一天更新一次,其它时间位不参与
cronPattern=='yyyyMMd1H1mmss' : 一天更新一次,且今天的小时至少大于昨天缓存的1小时
cronPattern=='yyyyMMd1000000' : 一天更新一次,且今天的时间点大于昨天的时间点
排他模式:
excludePatterns : {
currVars : [], //查询条件值:例如月份
patterns : [], //需要排除的查询条件值选项
regex : '' //根据表达式排除
}
//仅在cronPattern=true的时候生效,根据参数值决定是否进行网络请求,当currVars中的值出现在patterns中或匹配指定的regex表达式,当前url请求被排除在缓存读取方式考虑外。
数据预处理:
当数据成功从网络获取后,会优先调用before : function(data){...}方法。通过decodeHtml方法进行字符转义处理,通过mapping方法将特殊url内容进行批量替换处理等操作。
before : function(r){//服务端返回的数据是encode过的,需要先解码
r.data.picItem.INST_CONTENT = r.data.picItem.INST_CONTENT.codeHTML().decodeHtml();
r.data.picItem = $UriMappingsTool.mapping(r.data.picItem);
return r;
}
策略执行流程如下(伪代码):
根据请求参数及url构建缓存主键K
检测网络信号(1时表示有网络,返回2时表示无网络)
if (无网络) {
根据缓存主键K直接读取本地缓存数据
} else {//有网络
Var ecp = 执行excludeCronPatterns(排他模式)方法//检测当前参数值currVars是否出现在匹配模式patterns或regex 中
if (!ecp && cronPattern == true) {//本地缓存加载优先
优先加载本地数据,本地数据抓取失败后读取网络数据并缓存
} else {
if (cronPattern以策略为准) { //执行策略
根据缓存主键K从数据库中加载缓存数据
if(查找到缓存){
获取缓存数据的缓存时间
if(当前时间-缓存时间>缓存策略时间){//超过数据有效时期,需要重新加载数据
优先从网络抓取数据,网络数据抓取失败后返回本地数据
}else{
直接返回本地数据
}
}else{
从网络抓取最新数据并缓存
}
} else {//实时:格式错误、没填、false、排除
请求网络数据并缓存
}
}。
Claims (3)
1.一种适用于移动开发的高性能缓存方法,其特征在于,基于ajax请求进行二次封装,根据url配置及请求参数动态构造缓存主键,通过websql实现网络数据本地化,并根据对应的缓存策略及匹配模式决定数据的抓取方式。
2.根据权利要求1所述的方法,其特征在于,包括
1)缓存主键构建及懒加载
通过url及其data参数拼接并转义生成的缓存表唯一主键
2)cronPattern表达式
当cronPattern==true时,以本地缓存数据读取优先
当cronPattern==false 或 不填 或 格式不正确时,以实时请求网络数据优先
当cronPattern=='yyyyMMddHHmmss' 时,以策略抓取数据,
3)排他模式
在cronPattern=true的时候,根据参数值决定当前url请求是否被排除使用缓存策略,当currVars中的值出现在patterns中或匹配指定的regex表达式,当前url请求被排除并需要进行网络请求。
3.根据权利要求2所述的方法,其特征在于,在1)中,当配置参数中的lazy==true时,请求参数将不参与主键的生成,避免部分请求因参数变化而导致的重复后端数据请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610817072.4A CN106407374A (zh) | 2016-09-09 | 2016-09-09 | 一种适用于移动开发的高性能缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610817072.4A CN106407374A (zh) | 2016-09-09 | 2016-09-09 | 一种适用于移动开发的高性能缓存方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106407374A true CN106407374A (zh) | 2017-02-15 |
Family
ID=57999629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610817072.4A Pending CN106407374A (zh) | 2016-09-09 | 2016-09-09 | 一种适用于移动开发的高性能缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106407374A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1708757A (zh) * | 2002-12-23 | 2005-12-14 | 国际商业机器公司 | 透明网络边缘数据高速缓存 |
CN105282236A (zh) * | 2015-09-16 | 2016-01-27 | 上海亿保健康管理有限公司 | 一种分布式缓存方法及装置 |
-
2016
- 2016-09-09 CN CN201610817072.4A patent/CN106407374A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1708757A (zh) * | 2002-12-23 | 2005-12-14 | 国际商业机器公司 | 透明网络边缘数据高速缓存 |
CN105282236A (zh) * | 2015-09-16 | 2016-01-27 | 上海亿保健康管理有限公司 | 一种分布式缓存方法及装置 |
Non-Patent Citations (2)
Title |
---|
HANGGE: "swift-拦截Alamofirede 网络请求(缓存请求结果,从缓存中读取数据", 《HTTP://WWW.HANGGE.COM/BLOG/CACHE/DETAIL_1171.HTML》 * |
I张迷: "缓存HTTP POST请求和响应", 《HTTPS://WWW.JIANSHU.COM/P/8EE08D531A7D》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103563296B (zh) | 用于移动设备的联络中心共同浏览 | |
CN103634382B (zh) | 一种在网页上实现实时交互的系统及方法 | |
CN107295064A (zh) | 基于web的组态型远程监控方法、电子设备及存储介质 | |
CN109726098A (zh) | 接口测试方法、装置及计算机可读存储介质 | |
CN104992227A (zh) | 一种智能抢单系统 | |
CN103198417A (zh) | 移动互联网旗帜广告及其后台发布方法、互动方法 | |
CN106383704A (zh) | 进度条数据处理的方法和装置 | |
CN103246963B (zh) | 基于物联网的员工培训系统 | |
CN105759938B (zh) | 移动终端的节能方法和设备 | |
CN106209512A (zh) | 一种上报用户行为数据的方法及装置 | |
CN101808121A (zh) | 一种移动终端服务器日志写入数据库的方法和装置 | |
CN107203470B (zh) | 页面调试方法和装置 | |
CN107707404A (zh) | 网站在线人数统计方法、装置和网站服务器 | |
CN103513986A (zh) | 一种在无操作系统设备中利用CGI技术实现动态web服务器的方法 | |
CN101079848B (zh) | 一种互联网站内消息的通信方法、装置、服务器及系统 | |
CN105556918B (zh) | 一种资源下载方法及电子设备 | |
CN104717131A (zh) | 信息交互方法及服务器 | |
CN104537496A (zh) | 智能终端设备使用状况统计分析方法及装置 | |
CN106407374A (zh) | 一种适用于移动开发的高性能缓存方法 | |
CN109064815A (zh) | 在线考试方法和装置、计算设备及存储介质 | |
CN110020297A (zh) | 一种网页内容的加载方法、装置及系统 | |
CN108108400B (zh) | 一种api基于本地数据增量的方法 | |
CN103455503A (zh) | 字库收集方法、网页渲染方法、装置及系统 | |
CN110413916A (zh) | 用于呈现题目页面的方法和装置 | |
CN103051722A (zh) | 一种确定页面是否被劫持的方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170215 |
|
RJ01 | Rejection of invention patent application after publication |