- 避免内存泄漏(全局变量、闭包、DOM 元素的引用、定时器、控制台打印)
- 有繁重计算的代码抽离到 Web Worker
- 分批渲染使用
requestAnimationFrame 代替 setTimeout - 页面添加多个元素时,使用
DocumentFragment 组装后一次性添加到页面 - 页面添加多个元素时,使用
requestIdleCallback 函数将在浏览器空闲时期被调用
function performanceChunk(data) {
let i = 0
function _run() {
if (i >= data.length)
return
requestIdleCallback((idle) => {
while (idle.timeRemaining() > 0 && i < data.length) {
const div = document.createElement('div')
div.textContent = data[i]
document.body.appendChild(div)
i++
}
_run()
})
}
_run()
}
- 使用
async 或 defer 属性加载脚本 - 使用
preload 或 prefetch 属性加载脚本