前端性能优化

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 优化

工具

性能评级工具(PageSpeed 或 YSlow)

页面加载缓慢的原因

浏览器部分

(1)网络层面

  • 过多的HTTP请求
    打开一个网页的时候,后台程序的响应并不需要太多时间,等待的时间主要花费在下载网页元素上了,即 HTML、CSS、JavaScript、Flash、图片等。据统计,每增加一个元素,网页载入的时间就会增加25-40毫秒(具体取决于用户的带宽情况)。
  • 资源访问带宽小
  • 网页元素(图片、视频、样式)太大

(2)浏览器渲染层面

  • 渲染阻塞(jS阻塞与CSS阻塞)
  • 重复渲染(频繁操作元素,造成的重排重绘)
  • DNS解析(DNS解析找出IP地址越快,响应的越快)

(3)服务端层面

  • 硬件配置低:这个是双向的
  • 服务器软件,比如防火墙、内网策略等
  • 未对Nginx这类web服务器进行配置优化
  • CPU占满,数据库未优化
  • 代码问题,代码效率,代码性能
  • 包含了过多的分析类工具

代码部分

(1)构建层面

未对代码进行打包、压缩、兼容性优化(webpack打包优化)

未合并重复的请求、代码

(2)编码层面

  • 错误的编排JS与CSS
  • for循环,迭代、同步、重定向、阻塞请求(JS代码阻塞)
  • 未删除重复、无用的代码
  • 未对逻辑业务复杂的代码进行重构,了解设计模式,对业务进行梳理

(3)机制(SSR,英文Server Side Render:服务器端渲染)

  • 未加入Async异步机制
  • 未思考页面加载、用户体验(可以使用页面懒加载,快要滚动到页面的时候,图片等显示出来)

(4)规范

  • CSS规范
  • HTML规范/HTML5规范
  • Airbnb代码规范

优化原则

CSS

  • 多个css合并,尽量减少HTTP请求

    内联图片(data URI scheme)

    <!-- image/png - 数据类型名称  base64 - 数据的编码方法  iVAGRw0KG… - 编码后的数据 -->
    <img src="data:image/png;base64,iVAGRw0KGDCFGNSUhEUgACBBQAVGAD CAIATYJ7ljmRGGAAGElEVQQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPACCCTElFTEVBQmGA" />
  • 将css文件放在页面最上面
  • 移除空的css规则

    避免空src或者href值

  • 避免使用css表达式
  • 选择器优化嵌套,尽量避免层级过深
  • 充分利用css继承属性,减少代码量
  • 抽象提取公共样式,减少代码量
  • 属性值为0时,不加单位
  • 属性值为小于1的小数时,省略小数点前面的0
  • 使用CSS Sprites将多张图片拼接成一张图片,通过CSS background 属性来访问图片内容

JS

  • 节流、防抖
  • 长列表滚动到可视区域动态加载(大数据渲染)
  • 图片懒加载(src)
  • 使用闭包时,在函数结尾手动删除不需要的局部变量,尤其在缓存dom节点的情况下
  • DOM 操作优化
    • 批量添加dom可先createElement创建并添加节点,最后一次性加入dom
    • 批量绑定事件,使用事件委托绑定父节点实现,利用了事件冒泡的特性
    • 如果可以,使用innerHTML代替appendChild
    • 在 DOM 操作时添加样式时尽量增加 class 属性,而不是通过 style 操作样式,以减少重排(Reflow

网络

  • 减少 HTTP 请求数量

    组合文件、优化图片,使用sprites设计风格:将背景图片合并成一个文件,通过background-imagebackground-position控制显示;

  • 利用浏览器缓存,公用依赖包(如vue、Jquery、ui组件等)单独打包/单文件在一起,避免重复请求
  • 减小cookie大小,尽量用localStorage代替
  • CDN托管静态文件
  • 开启 Gzip 压缩

资源压缩与合并

  • 使用在线网站进行压缩
  • node.js提供了html-minifier工具
  • 后端模板引擎渲染压缩
目录
相关文章
|
26天前
|
缓存 前端开发 JavaScript
优化前端性能:从理论到实践的全面指南
前端性能优化是提升用户体验的关键环节,但这一过程常被技术细节和优化策略所困扰。本文将系统地探讨前端性能优化的理论基础及实践技巧,包括关键性能指标、有效的优化策略、以及常见工具的应用。我们将从最基本的优化方法入手,逐步深入到高级技巧,为开发者提供一套全面的性能提升方案,以实现更快的加载时间、更流畅的用户交互体验。
|
1月前
|
缓存 前端开发 JavaScript
cnblogs——从主题开发浅谈前端性能优化
cnblogs——从主题开发浅谈前端性能优化
27 0
|
29天前
|
缓存 前端开发 JavaScript
微前端集成优化:让所有子应用体积更小,加载更快!
【8月更文挑战第17天】微前端集成优化:让所有子应用体积更小,加载更快!
37 1
微前端集成优化:让所有子应用体积更小,加载更快!
|
20天前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
27 1
|
1月前
|
缓存 前端开发 JavaScript
优化前端性能的十大最佳实践
在现代网页开发中,前端性能优化不仅仅是为了提升用户体验,还能显著提高网站的加载速度和响应时间。本文探讨了十大最佳实践,从优化资源加载到减少网络请求,再到提高页面渲染效率,每个实践都旨在解决常见的性能瓶颈。通过实现这些策略,开发者可以显著提升前端性能,提升用户满意度,并确保网站在各种设备上的流畅运行。
|
1月前
|
缓存 前端开发 JavaScript
深入探讨前端性能优化:从理论到实践
在现代Web开发中,前端性能优化已成为提升用户体验的关键因素。本文将探讨前端性能优化的基本理论,并结合实际案例,深入分析如何通过优化代码、资源管理和用户交互,显著提升网站和应用的响应速度。我们将介绍从理论到实践的多种方法,包括资源压缩、异步加载、缓存机制及工具的使用,帮助开发者构建更加高效和用户友好的前端应用。
|
1月前
|
缓存 编解码 前端开发
优化Web应用性能的前端技巧:从加载时间到用户体验
在现代Web开发中,提升前端性能不仅仅是为了缩短页面加载时间,更是为了提供更流畅的用户体验。本文将探讨几种有效的前端优化技术,包括懒加载、代码拆分、资源压缩以及浏览器缓存策略。通过具体实例和最佳实践,读者将能够掌握如何系统地提高Web应用的响应速度,减少资源消耗,并最终改善用户的整体体验。
|
13天前
|
前端开发 JavaScript API
前端性能优化-控制并发
【9月更文挑战第7天】前端性能优化-控制并发
12 0
|
1月前
|
缓存 前端开发 JavaScript
前端性能优化方案
【8月更文挑战第15天】前端性能优化方案
24 2
|
1月前
|
缓存 前端开发 API
优化前端性能的最佳实践
在构建高效的前端应用时,性能优化是不可忽视的关键因素。本文将探讨一些实用的前端性能优化策略,包括资源的懒加载、合理的缓存策略、代码分割以及异步数据加载等方法。通过实施这些最佳实践,可以显著提升应用的响应速度和用户体验。