app 缓存方案

IOS 和安卓客户端缓存策略方案。
主体思路是页面加载远程接口数据,接口默认都会被缓存,设定缓存过期时间(不同模块时间不一样,通常两个小时)。全局设定一个 js(通过远程加载),内容包括缓存过期时间,接口缓存是否过期等信息,如果后台接口内容有更新,通过修改 js 来强制刷新某个缓存。

一、定义全局 js 变量

var CONFIG_EOL = {
cache: false, //是否需要缓存
version: 201907191108, //文件版本号,精确到分钟,修改之后 expire_path中缓存会失效,最短替换时间为缓存失效时间
expire_data: {
//缓存过期时间 单位s
default: 10, //默认时间 7200s
"api/news/lists": 120 //新闻列表缓存时间120s
},
is_show_cache_size: false, //是否显示缓存大小按钮
api_cache_time: 2592000, //缓存时间 30天
api_cache_refresh_time: 20, //缓存更新时间 20s
api_url_refresh_time: 20, //API配置文件更新时间 20s
access_token: false, //是否启动token认证
chooseschool_limit_center: false, //选大学是否做限制
chooseschool_limit_coop: {
//选大学是否做限制
qqbrowser: false, //qq浏览器
bdbk: false, //百度百科
bdkp: false, //百度卡片
bdwk: false, //百度文库
jrtt: false, //今日头条
qihujy: false, //360教育
qihukp: false, //360卡片
shenma: false, //神马搜索
sougou: false, //搜狗搜索
wifi: false, //WIFI万能钥匙
xiaomi: false //小米小爱
},
download_limit_coop: {
//下载按钮是否隐藏
qqbrowser: true, //qq浏览器
bdbk: true, //百度百科
bdkp: true, //百度卡片
bdwk: true, //百度文库
jrtt: true, //今日头条
qihujy: true, //360教育
qihukp: true, //360卡片
shenma: true, //神马搜索
sougou: true, //搜狗搜索
wifi: true, //WIFI万能钥匙
xiaomi: true //小米小爱
},
school_api_json: {
//学校页是否启用json
history_score: true, //历史分数线
special_score: true, //专业分数线
students_plan: true //招生计划
},
api_cache_api: [
"apigkcx/api/video/lists" //视频列表
],
api_secert_api: [
//需要加密的接口
"apidata/api/gk/special/salary" //岗位薪资
],
api_config: {
//所有的api列表
release: {
URL: "https://api.eol.cn/gh5/api"
},
beta: {
URL: "http://api.116.dev.eol.com.cn/gh5/api"
},
apigkcx: {
LOGIN: "api/user/login"
},
apidata: {
PROVINCE: "api/data/config/province"
}
},
expire_path: [
//需要强刷的接口地址
]
};

二、页面每次启动,加载 config.js

三、缓存流程图

四、缓存方案

H5采用localStorage进行缓存,缓存大小最大5M 缓存方式: '/www/json/news/195.json': { timestamp: '', } APP使用SQLite,使用cordova-sqlite-storage控制缓存,无大小限制