浏览器的性能优化(重排)

在html中 我们通常要先经过渲染引擎构建dom树 样式表 然后组成render(渲染)树 ;

重排就是当某个子标签的样式发生改变时 会影响它的父元素,祖先元素等等一系列元素这时浏览器就会去重新渲染这些元素这就是重排也叫回流  

浏览器的不断渲染重排会大大影响web的性能导致有时候我们的页面会很卡;

为了减少重排尽量减少使用

减少dom操作

例如vue中使用的虚拟dom就是为了减少重排节约资源

合并样式使用style的csstext

div.style.cssText = 'padding:5px; border:1px solid #000; margin:5px;';

给几个样式加一个class类名调用类名

<style>
    .boxs{
        padding:5px; 
        border:1px solid #000; 
        margin:5px;
    }
</style>
<body>
<div class="box"></div>
</body>
<script>
	var box = document.querySelector('.box');
    box.classList.add('.boxs');
</script

几何属性

避免多次触发布局

如回到顶部

对于页面中的动画 尽量使用绝对定位操作定位属性

前端开发中,浏览器性能优化是提升用户体验的关键环节。优化方法可以从多个维度入手,包括网络加载、渲染执行、资源管理、代码结构优化等。以下是一些核心的优化策略和最佳实践。 ### 3. 网络加载优化 - **减少请求数量**:通过合并 CSS、JavaScript 文件,使用雪碧图(CSS Sprites)减少图片请求次数。 - **启用浏览器缓存**:设置合适的 `Cache-Control` 和 `Expires` 头信息,减少重复加载资源。 - **使用 CDN 加速**:将静态资源部署在离用户更近的 CDN 节点上,缩短网络延迟。 - **启用 Gzip 或 Brotli 压缩**:压缩文本资源,减少传输体积。 - **异步加载非关键资源**:使用 `async` 或 `defer` 属性加载非关键 JavaScript,避免阻塞页面渲染[^2]。 ### 3. 渲染与执行优化 - **减少 DOM 操作**:频繁的 DOM 操作会引发重排和重绘,应尽量批量操作或使用虚拟 DOM。 - **避免强制同步布局**:读写 DOM 属性时避免触发强制同步布局,导致性能下降。 - **使用防抖(debounce)与节流(throttle)**:控制高频事件的触发频率,如滚动、调整窗口大小等。 - **利用 Web Workers**:将复杂计算任务移出主线程,避免阻塞 UI 渲染。 - **合理使用懒加载(Lazy Load)**:对图片、视频等资源延迟加载,直到用户滚动到可视区域再加载。 ### 3. 用户体验优化 - **预加载关键资源**:使用 `<link rel="preload">` 提前加载关键字体、脚本或图片。 - **骨架屏(Skeleton Screen)**:在内容加载前展示占位符,提升用户感知速度。 - **服务端渲染(SSR)或静态生成(SSG)**:提升首屏加载速度和 SEO 表现,适用于 Vue、React 等现代框架。 - **优化关键渲染路径(Critical Rendering Path)**:减少关键路径上的阻塞资源,缩短首次渲染时间[^1]。 ### 3. Vue 项目中的性能优化实践 - **组件懒加载(路由懒加载)**:使用 `() => import('...')` 实现按需加载组件。 - **v-if 与 v-show 的合理使用**:频繁切换使用 `v-show`,不频繁切换使用 `v-if`。 - **避免在模板中使用复杂表达式**:将复杂逻辑移至 `computed` 或 `methods` 中。 - **使用 keep-alive 缓存组件状态**:避免重复渲染和状态丢失。 - **使用 Vue Devtools 进行性能分析**:识别组件渲染瓶颈,优化响应速度[^3]。 ### 3. Chrome DevTools 的性能调试技巧 - **Performance 面板**:记录页面加载过程,分析主线程任务、重排重绘、长任务等性能瓶颈。 - **Lighthouse 插件**:生成性能评分报告,提供优化建议,如减少未压缩资源、移除未使用 CSS 等。 - **Network 面板**:监控资源加载时间、大小、请求顺序,识别慢速请求。 - **Memory 面板**:检测内存泄漏,分析对象保留树。 - **Coverage 面板**:查看 CSS/JS 文件中未被使用的代码比例,指导代码瘦身。 ### 3. 示例:使用防抖优化高频事件 ```javascript function debounce(func, delay) { let timer; return (...args) => { clearTimeout(timer); timer = setTimeout(() => { func.apply(this, args); }, delay); }; } // 使用示例 window.addEventListener('resize', debounce(() => { console.log('Window resized'); }, 300)); ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值