Fizzy Zhang

本文目录

  1. 一、第三方引发类
    1. 1.1 WPS
    2. 1.2 高德地图前端SDK
    3. 1.3 腾讯地图前端SDK
  2. 性能类
    1. 2.1 out of memory
    2. 2.2 计算导致渲染进程卡死

印象深刻的BUG合集

一、第三方引发类

1.1 WPS

2023-12-01

事件描述:页面上的 a 标签,用户复制粘贴到 wps excel 单元格中,此时编辑超链接可以看到,hash 值被复制了一份

复现步骤:

  1. F12 往页面上写个标签 document.write('<a href="https://baidu.com/#/abc?a=1">我是百度</a>')
  2. 复制页面上的标签到 wps excel 单元格中
  3. 编辑单元格超链接

教训总结:用户在点击单元格超链接时,前端截取方法处理不当,引发多个重复参数。

题外话:有时看到开发同学编码没来由的在去重,或者做一些奇怪的兜底,可能不是我方代码不行,而是第三方的神迹。

1.2 高德地图前端SDK

2021-12-23 17:40 切身经历,没有高德事故报告,无从考究

事件描述:前端初始化高德地图异常,页面没剩啥功能可操作,amap 提供的定位获取失效,无法完成业务作业-打卡等各个流程

排查得出高德 CDN 返回的 JS,格式化后,比平时多了15行。约 25 分钟后恢复正常。

教训总结:

  1. 第三方依赖尽量本地化(大部分情况下,这种做法是OK的,不排除极端情况,如:API变更)
  2. 兜底/降级方案,比如该场景下的定位、自动降级切换地图等等

1.3 腾讯地图前端SDK

2023-08-07 14:45 同事分享,没有实质证据,无从考究

事件描述:腾讯地图 CDN 凉凉,无法加载,同事的 SPA 系统在模板 html 中 script 同步加载了该资源,导致白屏 2min 才能进去系统(2min 后 js fetch fail)

教训总结:

  1. 第三方依赖尽量本地化(大部分情况下,这种做法是OK的,不排除极端情况,如:API变更)
  2. 不能本地化别同步加载,在用到的页面异步添加 script load
  3. 兜底/降级方案,比如该场景下的定位、自动降级切换地图等等

性能类

2.1 out of memory

事件描述:Table场景,行是懒加载,然而是动态列,忽然业务侧爆发了新场景,5000+列,初始化渲染导致内存泄漏

教训总结:

  1. 想办法懒加载
  2. 不能懒加载的时候,从产品方案设置渲染上限

2.2 计算导致渲染进程卡死

事件描述:两个下拉具备关联关系,比如一个送礼页面,礼物下拉筛选有 品类 和 品类下的实体礼物。这里前端同学答应了产品和后端的无理请求,从后端拿了所有的品类和实体枚举项,刚进页面/没选品类的时候要加载所有品类下的实体下拉项。开发顺利,上线进入页面先卡 8s 后,才能正常操作。

教训总结:

  1. 质疑产品方案的合理性,产品所谓的用户体验,有时就是YY出来的交互,也不是用户需要的东西
  2. 质疑后端方案的合理性,为啥不动态搜索,灵活拆接口
  3. 纯计算可以放 web-worker,异步,不会阻塞渲染。比如这里就让这两个下拉去 loading,其他操作正常用
  4. 做压测