问题背景:pear-admin下拉选项初始化和table展示时会有重复请求的情况,导致重复请求。
优化:dictionary.js 修改使用layui.data缓存,两秒内重复请求直接返回数据。
优化代码如下:
const bufEfficientTime=2000;
/**
* 根据 Code 加载后台字典数据
*
* @param dictCode 标识
*/
this.dictListByCode = function (dictCode) {
if (layui.data('dictListByCode')[dictCode]){
let dicBuf=layui.data('dictListByCode')[dictCode];
if (new Date()-new Date(dicBuf.time)<bufEfficientTime){
return dicBuf.data;
}
}
let dictData = null;
$.ajax({
url: '/system/dictData/selectByCode',
data: {'typeCode': dictCode},
type: 'get',
async: false,
success: function (result) {
if (result.success === true) {
dictData = result.data;
layui.data('dictListByCode',{key:dictCode,value:{time:new Date(),data:dictData}})
}
}
})
return dictData;
}
/**
* 根据 Code 加载后台字典数据
*
* @param dictCode 标识
*/
this.dictListByUrl = function (url) {
if (layui.data('dictListByUrl')[url]){
let dicBuf=layui.data('dictListByUrl')[url];
if (new Date()-new Date(dicBuf.time)<bufEfficientTime){
return dicBuf.data;
}
}
let dictData = null;
$.ajax({
url: url,
type: 'get',
async: false,
success: function (result) {
if (result.code === 0) {
dictData = result.data;
layui.data('dictListByUrl',{key:url,value:{time:new Date(),data:dictData}})
}
}
})
return dictData;
}