【问题标题】:something wrong with performance性能有问题
【发布时间】:2014-08-08 07:15:40
【问题描述】:

我正在使用 jquery、knockout 和 WCF。我正在通过 Ajax 请求加载来自 WCF 的数据并将数据推送到可观察数组中。这个 observable 数组绑定到 html 表

<div  style="overflow: hidden;" >
<table style="width: 100%" >
    <thead>
        <tr>
            <th>Id </th>
            <th>Name</th>
        </tr>
    </thead>
</table>
<div style="overflow: auto;height: 320px;">
    <table id ="Table1" style="width: 100%;" >
        <tbody data-bind="foreach: ListOfArray">
            <tr  data-bind= "click: showData">
                <td data-bind="text: Id"></td>
                <td  data-bind="text: Name "></td>
            </tr>   
        </tbody>
    </table>
</div>

当我单击行时,选择它需要 4-5 秒。当我单击行时,我放置了探查器。这就是它所显示的

谁能指出它在哪里变慢了,为什么?

【问题讨论】:

  • 有机会获得更大的图像吗?告诉我们更多关于 WCF 位的信息
  • @MickyDuncan 我如何显示更大的图像?当我调用它时,WCF 正在向我返回数据
  • @MickyDuncan 你能放大你的页面,让它更容易从图片中读取吗?
  • 哦,缩放成功了。那么 WCF 服务返回了多少项绑定到您的表中?
  • @MickyDuncan WCF 只返回一次数据

标签: javascript jquery wcf knockout.js


【解决方案1】:

从您的 cmets 中,您说您的 HTML 表格显示 “5000 行”,而性能差,但 “性能好 > 如果只有 200 行”。

通常,由于内存限制和您发现的性能影响,应用不应尝试显示大量项目(在本例中为 5000 个)。

最常见的做法是只进行分页并一次显示 20 个项目,并带有 Previous; 下一页和页码。

如果您不希望分页,另一种方法是将您的表格重新设计为 虚拟表格,您基本上对可以表示的项目数量没有限制(仅限虚拟视图加载到内存中可以看到的和不是什么是屏幕外)。感谢 Facebook 上的无休止滚动。

【讨论】:

  • 我的问题不在于渲染 5000 行。是关于花更多时间点击行
  • @happy 我担心你的问题是内存。即使不是,我也绝对不希望访问一个获取 5000 个项目的网站!
猜你喜欢
  • 1970-01-01
  • 2017-04-13
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多