对包含大量数据的羊驼毛速度进行故障排除

时间:2019-04-03 21:59:19

标签: alpacajs

我的AlpacaJS配置变得非常不可用,无法呈现大量数据。我已经在一个项目上成功使用Alpaca数月了,但是最近却遇到了数据集比我以前抛出的更大的问题。

我有一个嵌套的数据结构-一个包含字段的对象数组,另一个包含更多字段和另一个数组的对象数组,等等。基本上,它是一棵倒下约4层的树。最初可以正常工作,但是一旦我保存了一堆数据,一切就变得缓慢了,例如:

  • 羊驼毛需要很长时间才能初步渲染

  • 在页面上滚动很慢,并且会产生空白屏幕数秒钟,直到弹出/渲染当前在屏幕上的元素为止。

  • 与单个输入元素进行交互有很大的滞后-可能需要花费几秒钟的时间才能将键入的字符实际出现在字段中。

我竖起了一个小提琴以说明问题(小提琴本身可能需要很长时间才能加载!): https://jsfiddle.net/DookTibs/q6u25ec3/7/

        // preloadData/schema defined above in jsfiddle; way too much to post here
        $(document).ready(function() {
            $("#form").alpaca({
                "data": preloadData,
                "schema": schema,
                "options": {
                    "form":{
                        "attributes":{
                            "action":"http://httpbin.org/post",
                            "method":"post"
                        },
                        "buttons":{
                            "submit":{
                                "title": "Send Form Data",
                                "click": function() {
                                    var val = this.getValue();
                                    if (this.isValid(true)) {
                                        alert("Valid value: " + JSON.stringify(val, null, "  "));
                                        this.ajaxSubmit().done(function() {
                                            alert("Posted!");
                                        });
                                    } else {
                                        alert("Invalid value: " + JSON.stringify(val, null, "  "));
                                    }
                                }
                            }
                        }
                    }

            });
        });

在小提琴中有(大约计数)3个顶层元素,每个元素有1-2个第二层元素,50-100个第三层元素和0-3个第四层元素...产生大约1500个总元素页面,包括用于与数组交互的Alpaca控件。

我注意到/尝试过的事情:

  • 我已将生成的html(将近100,000行)放入了自己的文件中。在浏览器中查看此问题没有问题,因此我认为这不是字段太多的问题。 (我不知道这是否是所有有用的信息;在这种情况下,显然没有任何侦听器或逻辑附加到元素上,因此运行速度更快也就不足为奇了)

  • 我已经通过将“ view”:“ web-display”传递给初始的羊驼毛以只读模式进行了尝试。这里也存在很多问题-特别是滚动滞后/弹出,但显然没有输入滞后,因为没有输入!但这表明引起问题的不仅仅是听众过多。

  • 如果由于我的数据结构的深度而导致内存问题,我尝试将其“展平”-因此,不是将每个对象层嵌套在一起,而是将每个数组放在顶层,然后添加引用其他元素的字段。没有明显的区别,我仍然看到相同类型的问题。

我想知道是否有任何建议可以尝试,例如以不同方式配置羊驼毛?我可以假设学习过程会很艰难,但是我很乐于深入研究代码,因此,如果对羊驼代码库中的位置有任何建议,我也很想听听

0 个答案:

没有答案