今天处理了一个奇葩的 IE 性能问题,可能我以前低估了 IE 的性能多差

2020-11-23 22:11:04 +08:00
 murmur

需求很简单,一个 50 行左右的简单表格,每行有三四个文本框可以编辑,做了表列锁定,用的饿了么 UI,用户说 IE11 卡,按理说都是这几年买的电脑,win10 也装了,IE11 性能怎么也不可能这么差

分析过程略,直接给结果,我们来做题

每行 4 个文本框,50 行,那么一页就有 200 个文本框

因为饿了么的列锁定是 2 个重叠表格实现的,也就是同样的文本框渲染了 2 次,所以一页现在就有 400 个文本框

关键来了,IE11 下,饿了么的 input 会计算自己的高度(我们知道,老一点的浏览器在获取计算长宽这样的属性时会把所有缓存的东西算一下得到正确值),这样一次 patch 需要 20-30ms

所以这 400 个文本框的总耗时会超过 10 秒,虽然性能分析模式慢一些,但是实际上也要 6 秒以上了

7018 次点击
所在节点    程序员
50 条回复
ragnaroks
2020-11-24 18:50:41 +08:00
@reus get 到你的点了,是我搞错进制,我把秒和毫秒搞成 100 了
sagaxu
2020-11-24 18:57:19 +08:00
@wdhwg001 firefox 可没用 webkit
ofooo
2020-11-24 22:41:07 +08:00
所以这就是产品设计问题啊。50 个问题,一气输入完,万一刷新一下没了。。。。。

用户不得气死?得是什么用户,才会一气输入 50 个问题啊。。。。是产品的儿子么
bojackhorseman
2020-11-24 23:50:27 +08:00
编辑表格用弹窗实现呢,会不会减少不必要的渲染
laminux29
2020-11-25 00:42:28 +08:00
七八年前,用.net webform,推过一个 10*20 的简单表格,浏览器卡了 47 秒。
autoxbc
2020-11-25 01:20:30 +08:00
@wdhwg001 #18 其实 Opera 也在积极推动标准,当年 W3C 的 CSS 专家组很多是 Opera 的雇员,CSS 测试套件 Acid2 只有 Opera 能通过
murmur
2020-11-25 08:10:52 +08:00
@ofooo 打分,填表,而且都是加分项,选填得,现在得技术 blur 得时候做一个保存又不难,局域网内网速还是随便用得
krixaar
2020-11-25 08:35:45 +08:00
@ragnaroks Valve:好的,那服务器就设置成 64tick 吧🤣
imn1
2020-11-25 10:16:48 +08:00
400 个文本框……不知道怎么接话
murmur
2020-11-25 15:56:12 +08:00
@imn1 是 200 个文本框,因为设计问题被渲染 2 次所以是 400 个,你可以理解成 50 个人,每个人 4 个分数项,你是领导给他们打分,这个场景就好理解了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/728516

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX