CN106407374A - 一种适用于移动开发的高性能缓存方法 - Google Patents

一种适用于移动开发的高性能缓存方法 Download PDF

Info

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
Application number
CN201610817072.4A
Other languages
English (en)
Inventor
董永
周明
翁加林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Software Co Ltd
Original Assignee
Inspur Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Software Co Ltd filed Critical Inspur Software Co Ltd
Priority to CN201610817072.4A priority Critical patent/CN106407374A/zh
Publication of CN106407374A publication Critical patent/CN106407374A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; 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时,请求参数将不参与主键的生成,避免部分请求因参数变化而导致的重复后端数据请求。
CN201610817072.4A 2016-09-09 2016-09-09 一种适用于移动开发的高性能缓存方法 Pending CN106407374A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1708757A (zh) * 2002-12-23 2005-12-14 国际商业机器公司 透明网络边缘数据高速缓存
CN105282236A (zh) * 2015-09-16 2016-01-27 上海亿保健康管理有限公司 一种分布式缓存方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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