代码拉取完成,页面将自动刷新
1122
【轻量级 PR】:修复对帖子HighLight时一个严重的性能问题
已关闭
描述此 Pull Request 的变更
将一个循环改为for...in
的形式.
描述变更理由
如果viewthread时带有参数&highlight=text
, 前端将对帖子进行高亮处理.
但是将relatedlink
传入到relatedlinks函数之前, 有一个bug, 会导致数组长度变成当前帖子的pid.
在测试时这个问题不容易被发现, 因为测试站点pid一般不会很大. 但是在一个长期运行的站点, 这个bug将会越来越明显, 假如pid增长到100,000,000
以上, 按照原函数的写法, 就会进行一个1000万次的循环, 直接阻塞页面渲染长达超过数十秒.
虽然导致数组变长的bug已经修复(!523:修复 在部分情况下高亮功能导致页面卡死的问题), 但是仍有第三方模板复制并使用未经修复的代码, 导致页面卡死.
因此需要从函数本身解决这个问题, 而不是修改自带的基础模版.
对不向前兼容或涉及安全性变更的特殊说明
经过caniuse和MDN搜索查证,for...in
语法支持绝大部分浏览器(包括IE 6), 没有严重的不兼容问题.