代码之家  ›  专栏  ›  技术社区  ›  Hailwood

大规模DOM操作

  •  0
  • Hailwood  · 技术社区  · 15 年前

    我想知道是否有人可以给出一些关于使用jquery可以在不冻结浏览器的情况下进行的最大程度的DOM操作的安全指南。

    也是批量DOM操作的最佳方法。

    基本上,在任何时候我都可以处理高达40K的列表 li

    我真正要做的就是展示一个,隐藏另一个。

    所以这是我的问题

    • 理论上,一次可以操作多少个li,而不会破坏浏览器?
    • 我应该如何处理李的?
      • 作为单个对象操作(UL级别)
      • 循环第一个列表中的每个li,删除它们,然后循环插入每个新li。
      • 循环访问大量的li(如果是,那么一次10、100、1000、10000多大?)
    • 我应该如何获取数据?(json格式)
      • 在一个Ajax调用中获取整个列表(40k li的值)的数据。
      • 在页面创建时插入每个列表的数据(可能超过20个列表=800000 li's
      • 做几个Ajax调用来获取数据(如果是的话,一次有多大10、100、1000、10000?)
    2 回复  |  直到 12 年前
        1
  •  3
  •   unomi    15 年前

    如果你真的想操纵这么多,那么你应该采取类似的措施 http://developer.yahoo.com/yui/3/async-queue/

    作为一次应该处理多少个的答案,您可以建立一个校准,它查看最后一组完成的速度,并相应地或多或少地处理。这可以为您提供从桌面Chrome到移动IE的各种应用程序。

    Ajax调用也是如此,它可以根据网络速度进行升级。

        2
  •  1
  •   Anthony Corbelli    15 年前

    警告:这完全取决于您的计算机性能。坦率地说,在一个DOM操作中,任何接近100个元素的操作都会变得有点愚蠢和昂贵。也就是说:

    1)取决于您的系统,我的旧系统在30岁左右达到最高,而我的新系统在我打破之前可以达到120。

    2)在尽可能大的水平上与他们合作。使用一组li操作一个ul要比使用一组li快得多。使用jquery并将对象存储在一个变量中(这样每次使用它时就不会查询dom),以提高性能。

    3)首先加载用户将看到的第一个数据,然后以同样大小的批次获取。如果一次只能看到20个li元素,那么没有理由再加载更多元素,再加上一点缓冲区(30?)。.