美文网首页
构造前端缓存

构造前端缓存

作者: 仁安天下 | 来源:发表于2019-11-28 20:08 被阅读0次

    问题:
    在打开模态框时,请求数据,如果数据量很大,需要等很久,而且模态框仅仅是页面上的某一个功能,需要频繁操作,这样就带来很差的体验和糟糕的等待
    解决思路:
    直接在这个页面构造一个缓存容器,这样在反复打开模态框的时候,直接将数据传给模态即可
    代码:

      //构造缓存容器
        var cache = {};
        $scope.createCache = function () {
            return function (key, value) {
                if (value !== undefined) { //设置缓存
                    cache[key] = value;
                    cache["time"] = Date.parse(new Date());  //每次设置当前的缓存时间
                    return cache[key]
                }
                else {
                    return cache[key]; //读取缓存
                }
    
            }
        };
    
        $scope.get_user = function (key) {
            var userCahce = $scope.createCache();
    
            function userDate(key) {
    
                if (userCahce(key) != undefined && ((Date.parse(new Date()) - cache["time"]) / (3600 * 1000) < 6)) //如果缓存中有值且时间不超过6小时
                {
                    return userCahce(key)
                } else {                           //否则从后台更新数据到前端,并设置缓存
    
                    sysService.getUser({}, {}, function (res) {
                        if (res.result) {
    
                            return userCahce(key, res.data);
                        } else {
    
                            msgModal.open("error", res.message);
                        }
                    });
                }
            }
    
            return userDate(key)
    
        };
    
     $scope.addAccount = function () {
    
            var modalInstance = $modal.open({
                templateUrl: static_url + 'client/views/addAccount.html',
                windowClass: 'dialogDetail',
                controller: 'addAccount',
                backdrop: 'static',
                resolve: {
    
                    objectItem: function () {
                        var data = $scope.get_user("key");
                        return data;
                    }
    
    
                },
    
            });
            modalInstance.result.then(function () {
                $scope.account();
    
    
            })
    
        };
    

    相关文章

      网友评论

          本文标题:构造前端缓存

          本文链接:https://www.haomeiwen.com/subject/nxliwctx.html