createImageBitmap 相比直接 new Image 解码,在 Canvas 高频绘制中解决什么问题?
围绕“createImageBitmap 相比直接 new Image 解码,在 Canvas 高频绘制中解决什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断时要说明可提前解码、可控制 resize/colorSpace 并便于 Transferable。
浏览器 · 性能优化面试题第 1 页,显示第 1–16 题,共找到 16 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“createImageBitmap 相比直接 new Image 解码,在 Canvas 高频绘制中解决什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断时要说明可提前解码、可控制 resize/colorSpace 并便于 Transferable。
围绕“CanvasRenderingContext2D.filter 能直接替代离线预处理图片滤镜吗,边界是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按支持度、每帧重复求值成本与离屏缓存决策。
围绕“频繁整幅 getImageData/putImageData 的瓶颈在哪里,什么局部策略能降低主线程压力”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须定位 GPU 回读与 RGBA 内存拷贝。
围绕“CanvasRenderingContext2D.save/restore 滥用为什么会让绘制变慢,应如何界定栈边界”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖判断时要说明保存的是裁剪、变换、样式等大状态且配对成本随嵌套放大。
本文解释 input accept 属性的本质是选择提示而非安全边界,给出其可被绕过的情况。说明如何在前端通过 File.type 和扩展名进行辅助校验,并强调服务端校验的必要性,以及失败时的用户提示和体验兜底。
围绕“CSS contain 属性的 layout、paint、size 等取值如何让浏览器缩小一次样式变更的重算范围”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 containment 告诉浏览器子树与外部互不影响从而限制回流/重绘边界,且 size 需给定尺寸的前提。
围绕“什么是强制同步布局,在循环里交替写样式和读 offsetHeight 会造成什么后果、如何定位这类问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释循环读写使浏览器每轮被迫提前布局的开销特征,以及用 Performance 面板识别长 Layout 的思路。
围绕“如何用 PerformanceLongTaskTiming 监测页面长任务,50ms 阈值是怎么来的、attribu”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出 PerformanceObserver 监听 longtask 的接入方式、阈值来源及归因只能到任务容器级别的限制。
围绕“用 PerformanceNavigationTiming 能拆解出页面加载的哪些阶段,TTFB 偏长应看其中哪几个”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答要按时间轴解释 redirect、DNS、TCP、request/response、domInteractive 等字段并能定位 T。
围绕“PerformancePaintTiming 提供的 first-paint 与 first-contentful-”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须区分任意像素首绘与首个内容(文本、图片、canvas)绘制,并能把 FCP 偏晚归因到渲染阻塞资源链上。
围绕“给 touchstart、wheel 监听加 passive:true 为什么能改善滚动流畅度,加上之后代码里不能再”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释浏览器无需等待监听器决定是否取消默认滚动即可立即合成滚动帧,以及 passive 下 preventDefault 无效。
围绕“为什么用 transform 和 opacity 做动画通常比修改 top/left 或 width 更流畅”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须落到三类属性分别触发布局、绘制、仅合成的流水线差异上。
围绕“什么时候应该用 IndexedDB 游标而不是直接用 get 或 index”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须给出范围扫描和分页场景。
围绕“localStorage 存储中 JSON 序列化和深层嵌套有什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须讨论性能与数据大小边界,以及备用方案。
本题解释 Transferable 对象(如 ArrayBuffer)在 Worker postMessage 中的零拷贝传递原理:共享所有权转移而非复制,原上下文对象被分离;对比结构化克隆,突出性能与安全优势,并给出使用边界和一些可转移对象类型。
围绕“DocumentFragment 是用来解决什么问题的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它作为轻量级容器避免多次重排和性能问题,但不适于实际插入。