【问题标题】:how to optimize data loading in the search area?如何优化搜索区域的数据加载?
【发布时间】:2019-09-17 13:22:51
【问题描述】:

我有一个在搜索区显示数据的功能,功能不错,但是想看搜索区的数据时速度很慢,即使我们点击一​​个数据。

数据加载时间很慢,因为我的请求中有 22500 行,是否有可能纠正这个问题,例如添加一个仅显示 100 行的函数。

如何解决这个问题,谢谢

<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.full.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/i18n/fr.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<script src="https://cdn.rawgit.com/eligrey/FileSaver.js/e9d941381475b5df8b7d7691013401e171014e89/FileSaver.min.js"></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/spin.js/2.0.1/spin.min.js'></script> 
.
.
.
function searchTree(obj,search,path){   
        var newSearch = search.replace(/ *\[ Resp:[^)]*\] */g, "");
        var newSearch1 = search.replace(/ *\( [^)]*\) */g, "");     
        if(obj.desc === newSearch && newSearch1){ 
            path.push(obj);
            return path;
        }
        else if(obj.children || obj._children){ 
            var children = (obj.children) ? obj.children : obj._children;
            for(var i=0;i<children.length;i++){
                path.push(obj);
                var found = searchTree(children[i],newSearch && newSearch1,path);
                if(found){
                    return found;
                }
                else{ path.pop();}
            }
        }
        else{ return false;}
    }
.
.
.
$("#search").on("select2:select", function(e) {     
             var data = e.params.data.text;     
        var paths = searchTree(root,data,[]);       
        if(typeof(paths) !== "undefined"){
            openPaths(paths);
        }
        else{
            alert(data+" auncun résultat!");
        }
    })  

【问题讨论】:

标签: javascript html jquery-select2


【解决方案1】:

看起来你正在做递归正则表达式的东西,这听起来很慢。加速任何事情的基础是缓存重复的工作。所以,看看你为什么要做如此复杂的正则表达式的东西,看看你是否能找到一种方法来缓存东西,这样你就不必每次都进行如此昂贵的调用,或者找到一种不这样做的方法完全可以工作。

就像,您似乎在某个树的所有子节点上运行它。如果树中的节点在每次调用之间都没有改变,那么也许您可以预先解析节点并将它们放入更容易搜索的数据格式中,这样您就不必每次都对它们运行递归正则表达式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多