• 【新特性速递】表格加载速度足足 3 倍提升,爱了爱了


    FineUI 的下个版本(v8.0.0),我们会为表格新增延迟加载功能(EnableDelayRender),从而使得典型表格页面加载性能提升 3 倍以上!

    大数据表格

    FineUI很早之前就已经支持大数据表格了,对于需要一次性展示超过 1000 条数据的纯展示场景非常有用。

    官网示例:FineUIPro 在线示例 - 基于 jQuery 的专业 ASP.NET 控件库

    但是大数据表格属于企业版功能,必须使用网址数据源,而且不支持树表格、列锁定、单元格合并等等很多特性,局限性比较大。

    大数据表格的实现原理其实是虚拟滚动条,只展示当前用户可视区域内的表格数据。

    如下图所示,长长的滚动条是由一个 .f-grid-table-bigdata-shadow 元素的高度撑起来的,而这个高度是根据每行的高度和总行数计算来的(所以大数据表格要求行的高度必须固定)。

     

    v8.0新增的延迟加载

    由于大数据表格存在一定的局限性,我们一直在思考有没有更简单的办法提高普通表格的加载性能,特别是每页 200 - 1000 条数据的表格性能,这个才是我们最经常遇到的应用场景。

    说到底,表格行数对渲染性能的影响归根结底是因为大量DOM节点的产生,而在 200 条以上的数据情况下, 用户在页面第一次加载时最多看到不超过 30 条数据。

    也就是说,我们要额外加载 170 条用户看不到的数据,而这些额外加载的数据会影响页面的打开速度。

    如果能够延迟加载那些用户看不到的数据,岂不是一举两得:

    • 不会影响页面第一次加载时的用户看到的数据
    • 加快页面第一次打开的速度

    FineUI v8.0新增的延迟加载特性就是为了实现这个目的,来看下页面第一次加载时的DOM节点渲染情况:

    和大数据表格的情况类似,但是实现方式完全不同。

    整个表格在页面第一次加载时就完全渲染了,只不过DOM节点只渲染了前面的 30 多行数据,剩余的 400 多行数据以占位符的形式渲染到DOM,这就节省了大量的DOM渲染时间(加载了页面第一次渲染速度,提升用户体验)。

     

    为了比较准确的描述表格的渲染速度,我们写了如下的测试代码,用于衡量当前表格渲染用时:

    <f:Grid ID="Grid1" ...>
        <Columns>
            ...
        </Columns>
        <Listeners>
            <f:Listener Event="render" Handler="onGridRender" />
        </Listeners>
    </f:Grid>
    
    
    <script>
        // 等所有JS资源下载完毕后开始
        var __STARTTIME = new Date();
    
        // 表格渲染完毕后结束
        function onGridRender() {
            F.ui.Grid1.setTitle(F.ui.Grid1.getTitle() + ' - 渲染时间:' + ((new Date() - __STARTTIME) / 1000).toFixed(2));
        }
    </script>

    首先来看下,目前表格在加载 500 条数据和 1000 条数据的性能表现:

     

    添加了 v8.0.0 新增的延迟加载特性(EnableDelayRender=true)之后,我们再来看下相同页面的加载速度:

     

     小结

    经过多次测试,我们测算出平均渲染速度,如下表所示。

    可以看出,FineUI v8.0新增的延迟加载属性(EnableDelayRender=true)可以极大的提升表格页面的加载速度,在典型的每页 500 条数据的情况下,页面第一次加载的速度提升 3 倍以上。

      第一次 第二次 第三次 第四次 第五次 第六次 平均加载时间(秒) 渲染速度提升
    500条数据  0.91 0.87  0.84  1.01   0.92  0.88  0.91 -
    1000条数据  1.72  1.68  1.65  1.64 1.70   1.62  1.67 -
    500条数据(延迟渲染)  0.25  0.22  0.24  0.24  0.22  0.20  0.23  396%
    1000条数据(延迟渲染)  0.40  0.38  0.35 0.34   0.41  0.39  0.38  439%

     

     

     

     

     

     

     

     为了更直观的感受两者的差异,我们通过两个动图来呈现 FineUI v8.0 带来的表格渲染速度的提升。

     未启用延迟加载

     

     

     启用延迟加载

     

    扩展阅读:《致广大 FineUI 网友的一封公开信》

    欢迎入伙:https://fineui.com/fans/

    三石出品,必属精品 

  • 相关阅读:
    stm32入门
    Shell入门
    广播与组播
    超时接收
    socket的四种IO模型
    网络套接字socket
    网络基础
    慢速系统调用被中断
    C# 程序运行时间计算
    HTTP的传输编码(Transfer-Encoding:chunked) / net::ERR_INVALID_CHUNKED_ENCODING
  • 原文地址:https://www.cnblogs.com/sanshi/p/15366500.html
Copyright © 2020-2023  润新知