前端性能优化
zhezhongyun 2025-05-30 18:56 10 浏览
1、如何进行前端性能优化?(必会)
1.1、减少 http请求
减少 HTTP 请求的方案主要有:合并 JavaScript 和 CSS 文件、合并图片 CSS Sprites、图像映射(Image Map)和使用Data URI 来编码图片,图片较多的页面也可以使用 lazyLoad 等技术进行优化。
1.2、减少对 DOM的操作
修改和访问 DOM 元素会造成页面的 Repaint(重绘)和 Reflow(重排),循环对 DOM 操作更是不推荐的行为。所以合理的使用 JavaScript 变量储存内容,考虑大量 DOM 元素中循环的性能开销,在循环结束时一次性写入。
减少对 DOM 元素的查询和修改,查询时可将其赋值给局部变量。
注:在 IE 中:hover 会降低响应速度。
1.3、使用 JSON格式来进行数据交换
JSON 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON 是 JavaScript 原生格式,这意味着在 javaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。与 XML 序列化相比,JSON 序列化后产生的数据一般要比 XML 序列化后数据体积小。
1.4、高效使用 HTML标签和 CSS样式
HTML 是一门标记语言,使用合理的 HTML 标签前你必须了解其属性,比如 Flow Elements,Metadata Elements ,Phrasing Elements。比较基础的就是要知道块级元素和内联元素、盒模型、SEO方面的知识。
CSS 是用来渲染页面的,也是存在渲染效率的问题。CSS 选择符是从右向左进行匹配的,当页面被触发引起回流(reflow)的时候,低效的选择符依然会引发更高的开销,所以要避免低效。
1.5、使用 CDN加速(内容分发网络)
其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN 系统能够实时的根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上
1.6、将 CSS和 JS放到外部文件中引用,CSS放头,JS放尾
1.7、精简 CSS和 JS文件
1.8、压缩图片和使用图片 Sprite技术
1.9、注意控制 Cookie大小和污染
因为 Cookie 是本地的磁盘文件,每次浏览器都会去读取相应的 Cookie,所以建议去除不必要的 Coockie,使 Coockie 体积尽量小以减少对用户响应的影响;
使用 Cookie 跨域操作时注意在适应级别的域名上设置 coockie 以便使子域名不受其影响 Cookie 是有生命周期的,所以请注意设置合理的过期时间,合理地 Expire 时间和不要过早去清除 coockie,都会改善用户的响应时间。
2、一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。(必会)
图片懒加载,在页面上的未可视区域可以添加一个滚动条事件,判断图片位置与浏览器顶端的距离与页面的距离,如果前者小于后者,优先加载。
如果为幻灯片、相册等,可以使用图片预加载技术,将当前展示图片的前一张和后一张优先下载。
如果图片为 css 图片,可以使用 CSSsprite,SVGsprite,Iconfont、Base64 等技术。
如果图片过大,可以使用特殊编码的图片,加载时会先加载一张压缩的特别厉害的缩略图,以提高用户体验。
如果图片展示区域小于图片的真实大小,则因在服务器端根据业务需要先行进行图片压缩,图片压缩后大小与展示一致。
相关推荐
- Angular UI组件库入门指南 - 如何安装和开始使用(一)
-
本文主要介绍如何安装和开始使用KendoUIforAngular。首先完成安装步骤。然后创建一个简单的应用程序,其中包含一些KendoUIforAngular组件,应用程序源代码可供您参考...
- SPSS22: 3.1.3 数据管理—复制数据属性
-
内容摘自《SPSS常用统计分析教程(SPSS22.0中英文版)(第4版)》3.1.3复制数据属性复制数据属性(CopyDataProperties)可用于建立相同调查问卷的空白数据集,或者复制其...
- 妙用Excel制作漂亮工整的工资条(excel表格中如何制作工资条)
-
工资条的制作方法并不难,但如何用Excel把工资条做得更美观、更有效率,可就要花费一点小心思了。许多人或许已经习惯了用工资明细表做员工工资统计并向上级汇报,将表中的条目慢慢复制粘贴然后打印给员工,这样...
- 如何运用EXCEL制作员工工资条,你造吗?
-
每个月工资发放之后,正规的公司应发给每个员工一个工资条。上面有员工当月工资的详细构成。但不能将工资明细表剪条发放,因为每个数字缺少对应项目,这就需要重新制作一张专门用来打印的工资条。作为劳动者,应该妥...
- 鸿蒙仓颉语言开发实战教程:实现商品分类页
-
今天继续为大家带来仓颉语言开发商城应用的实战教程,今天的内容是实现商品分类页。分类页面要在基本布局的基础上增加一些动态效果,比如点击状态的切换和两个列表容器的联动。下面为大家详细介绍。分类列表先来看左...
- 鸿蒙开发实战:一多开发之缩放布局
-
在HarmonyOS中,使用ArkTS语法进行自适应布局时,缩放布局是一种重要的布局方式。它允许组件根据外部容器的尺寸变化,按照预设的比例或权重调整自身的大小,从而确保在不同设备上都能呈现出良好的视觉...
- 基于WPF的电能质量检测系统上位机软件设计
-
郑恒持,蒋丁宇,卢兴泉,刘泊江(大连海事大学轮机工程学院,辽宁大连116026)摘要:电能质量直接影响着电力系统能否安全运行,为了能及时可靠地检测电能质量,采用全新的WindowsPresen...
- HarmonyOS实战:Tab顶部滑动悬停功能实现
-
前言日常开发过程中,遇到这种Scroll嵌套List列表滑动顶部悬停的场景十分常见,在鸿蒙开发时也正好实现了这个功能,本篇文章将带你一步步实现Tab顶部悬停的效果,建议点赞收藏!实现效果先...
- Axure教程:高级搜索(axure搜索功能怎么做)
-
在原型中,搜索是一个常见的交互设计。但不少同学因为技能不熟悉就没有做对应的交互效果。这篇文章,作者分享了设计搜索功能的整个流程,相信看完你也能做一个很牛逼的交互。高级搜索可以通过使用精确的关键词或短语...
- Excel小技巧: 如何设置自动列宽适应内容
-
我们在整理Excel表格的时候,通常会碰到单元格列宽混乱的情况(如下图所示),这会导致数据显示不完整或浪费空间导致打印不全,每次手动调整列宽都会费时费力,下面教你三个方法,让你一键设置自动列宽,适应单...
- 用好6个公式 Excel随意查询(excel中查询功能怎么用公式)
-
Excel表格一般会储存大量数据,我们可能不是每次都需要使用其中的所有数据,大部分时候只用到其中的一部分,所以数据查询功能就变得非常重要。为此,Excel本身也提供了多少查询方法,供我们使用。首先我们...
- 夏日PC消暑指南:机箱风道与风扇选择
-
进入六月以后北京的天气真是热得让人感觉喘不过气,大家天天打交道的笔记本和台式机更是连人都不如了,所谓热成狗真是一点也不夸张。年年大家在防暑抗高温这个问题上都是八仙过海各显神通,但是很多人光顾着自己凉快...
- Excel VBA必学技巧:用厘米设置单元格大小,办公效率翻倍
-
痛点:Excel默认单位太反人类!你是否经常遇到这些问题:-想设置精确的单元格尺寸,却只能用模糊的"字符宽度"和"磅值"?-设计打印报表时,毫米级的误差导致格式错乱...
- CSS小知识,分享14个你可能还未用上但又实用的CSS属性(下)
-
大家好,在上一篇文章里CSS小知识,分享14个你可能还未用上但又实用的CSS属性(上)我们一起学习了上半部分,这篇文章我们我们继续学习下半部分。八、CSSShakeEffect晃动效果CSS...
- 总结雅虎前端性能优化技巧(16条)(雅虎引擎还能用吗)
-
前言在日常开发中,有很多场景需要我们去做好前端优化,为了防止遗忘,加深记忆,今天参阅了一些资料以及自己的一些总结,梳理出来15条优化技巧。1.合并文件css、js合并,减少http请求数,每次http...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML常用标签 (29)
- HTML文本框样式 (31)
- HTML滚动条样式 (34)
- HTML5 浏览器支持 (33)
- HTML5 新元素 (33)
- HTML5 WebSocket (30)
- HTML5 代码规范 (32)
- HTML5 标签 (717)
- HTML5 标签 (已废弃) (75)
- HTML5电子书 (32)
- HTML5开发工具 (34)
- HTML5小游戏源码 (34)
- HTML5模板下载 (30)
- HTTP 状态消息 (33)
- HTTP 方法:GET 对比 POST (33)
- 键盘快捷键 (35)
- 标签 (226)
- HTML button formtarget 属性 (30)
- CSS 水平对齐 (Horizontal Align) (30)