总结雅虎前端性能优化技巧(16条)
myzbx 2025-01-06 14:23 20 浏览
前言
在日常开发中,有很多场景需要我们去做好前端优化,为了防止遗忘,加深记忆,今天参阅了一些资料以及自己的一些总结,梳理出来15条优化技巧。
1.合并文件
css、js合并,减少http请求数,每次http请求的建立,都需要进行三次握手,断开时需要四次挥手,http请求数量减少后,对页面的加载速度有很大的提升。
2.雪碧图
css sprites,雪碧图,合并多个图像为一个,通过background-position使用图像。
3.使用base64图片
小图片使用data:url引用,减少不必要的请求。
示例:
data:image/png;base64,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
4.使用缓存
设置缓存来减少不必要的网络请求。强缓存/协商缓存
5.gzip压缩
gzip压缩本质上是一种服务器编码,客户端解码的过程
开启gzip压缩后的请求流程
- 1.浏览器请求服务器时头信息Accept-Encoding: gzip, deflate来告诉服务器,浏览器支持gzip压缩
- 2.服务器收到请求后,先生成response,然后通过gzip对response进行编码,并增加Content-Encoding:gzip头信息返回给客户端
- 3.客户端收到response后,根据gzip进行解码。
6.css引入位置
将css的引入写在head标签内
尽管浏览器没有限制css的引入位置,但是css写在head内可以加快css的加载,避免页面不必要的重绘,css加载会阻塞后续js的执行以及dom树的渲染,所以引入最好位置就是head内js代码之前。
7.避免使用css表达式expression
示例:
background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" );
每当鼠标移动或者滚动,都会触发表达式,这样会拖慢页面其他脚本执行效率,影响体验。
8.js/css使用外部引入
将不常用的js或css使用外部引用,利用缓存来加快页面访问速度(相关参考强缓存、协商缓存)。
9.资源压缩
js、css删减注释,压缩,减小js、css体积,加快加载速度。
10.开启持久连接
每个连接可以处理多个请求-响应事务
非持久连接,当响应完毕后,当前连接会关闭,当开启持久连接后,当前连接在接受响应后还可以继续请求。
http开启keepalive,复用http请求,避免频繁建立http请求
11.不要过度使用post
- post请求浏览器分为两步 1.发送头数据head2.发送请求体。
- get请求只发送一个tcp数据包
13.控制页面dom数量
当页面解析渲染时,需要将html构建为dom树,解析css生成CSSOM树,将DOM与CSSOM合并生成渲染树,当dom数量过多时会影响dom解析以及最终的渲染时间,所以减少dom数量可以加速页面的渲染时间。
控制台查看dom数量:
document.getElementsByTagName('*').length
14.控制cookie
减少cookie大小,cookie会随每次请求提交到服务器,也会随响应返回到客户端,cookie会影响请求跟响应数据包大小。
15.使用事件代理
事件代理又被称为事件委托,是事件绑定中的一个常用技巧,就是把绑定在子元素上的响应事件委托给父元素,减少事件注册。原理为DOM的事件冒泡,使用事件代理,由父组件代理子组件事件。
事件传播:
- 捕获阶段 从window对象到目标阶段,称之为捕获阶段。
- 目标阶段 事件在目标上
- 冒泡阶段 从目标阶段一层层向上传递称之为冒泡阶段。
16.不要给img标签的src设置为空
老版本浏览器如果检测到src为空,还是会向服务器发送请求,如果想要使用图片懒加载功能,最好给图片设置一个默认图。
图片懒加载实现步骤:
- 客户端图片设置默认src为默认图
- 客户端请求服务器,获取图片列表
- 客户端拿到图片列表后将图片地址赋值给img标签的自定义属性,例如data-src
- 监听图片是否在可视范围,如果图片在可视范围,则把图片的data-src赋值给src
- img根据src请求服务器获取图片资源
相关推荐
- 攀升战境S5电竞主机评测:NVIDIA RTX 3060实力助阵,光追游戏走起
-
此次笔者将为玩家们推荐一款游戏主机——攀升战境S5。该主机是攀升电脑今年力推的游戏装备,主机采用一线品牌配件,特别是在显卡选用上严苛把关,精选GeForceRTX30系列显卡,玩家们大可以放心选购...
- 慎买-神牛闪光灯兼容性问题:神牛V350&松下S5M2
-
神牛V350和松下S5M2的兼容性问题。大家好,我是向往闪光灯人像的Fish。国庆期间,我购买了神牛V350闪光灯和神牛X2T引闪器,但这成为了我的噩梦。我原以为客服和松友们说这款闪光灯在松下S5M2...
- Acer蜂鸟持续办公一整天(acer 蜂鸟s5)
-
移动办公在工作节奏日益加快的今天越来越普遍,目前大部分工作无法在手持设备上完成,笔记本依然是移动办公最明智的选择。为了实现移动办公,很多笔记本越做越轻薄,性能也越来越强,而续航却一直没有很大提升。笔者...
- 职业车手明年会骑什么?2021赛季各大世巡赛车队使用器材一览
-
新年的钟声即将敲响,意味着充满魔幻色彩的2020年即将过去。受新冠肺炎的影响,2020年的赛季非常不同寻常。因这一原因不得不延迟举行的各种比赛导致许多车队的赞助商无法得到足够曝光,这也间接导致了许多车...
- 三星部分手机系统升级路线图流出(三星系统在哪升级)
-
三星包括Note3和S5在内的手机在升级到4.4.2系统之后一直没有什么系统升级的消息,而最近流出的一张三星的系统升级路线图中出现了一共13台手机升级KTU84P(也就是Android4.4.4)...
- 索尼Xperia Z3配置大曝光:升级并不大
-
IT之家(www.ithome.com):索尼XperiaZ3配置大曝光:升级并不大索尼明天就会在IFA2014大会上发布其下代旗舰XperiaZ3智能手机,目前网上曝光了其原型机,并且机身背后...
- 不进反退 三星Exynos 5433只能运行32位模式?
-
三星GalaxyNote4将带有两个版本,除了国行使用的骁龙805以外,还有三星自家的Exynos5433版本。而这颗SoC的详细信息三星并没有公布,据外媒Anandtech称,他们从源码中确认...
- 尼康Z6III测评:对比EOS R6 II、A7M4、S5IIX
-
摄影器材测评网站DPReview刚刚发布了尼康Z6III的完整图文测评,该机获得金奖评级,得分达到91%。以下是该文章的摘录——尼康Z6III核心规格:2400万像素“部分堆栈式”传感器RAW连拍:机...
- 赛默飞Ion S5首批数据公布,玩爆前任PGMTM系列
-
北美时间9月1日,赛默飞发布了两款最新的NGS系统IonS5和IonS5XL,旨在提供更加简捷的靶向测序流程。10月29日IonS5测序仪的首批实验数据产生于阜外医院。阜外医院研究人员选用了主...
- Excel技巧:快速制作批量文件夹,省时省力,加强工作效率
-
大家好,如果公司领导要求按人员姓名制作文件夹,以一人一档的形式呈现人员档案,办公人员一个一个制作费时费力,而且效力低下,今天为大家介绍快捷制作批量文件夹的方法下面我们用图片来进行演示操作打开表格,选...
- 国行、港版、美版Apple watch各版本售价一览
-
今天凌晨,苹果牌手表正式发布,苹果开始正式进入可穿戴设备领域,除了功能和外观,我相信大家更关心的是价格问题了,小编就将国行、港版、美版的Applewatch售价做一总结,以供参考。国行:美版:港版:...
- 松下全画幅微单S5和S1到底哪里不一样?
-
Hello,我是ET,欢迎大家来到我的“相机笔记”。————9月2日晚,松下正式发布了第4款全画幅微单LUMIXS5。这一篇,我们主要来说松下LUMIXS5和LUMIXS1到底有哪些区别...
- 融会贯通之典范 神舟S7-2021S5评测
-
便携、性能、续航,这简简单单的六个字道出了这么些年来笔记本电脑的设计方向,可是由于底层技术、模具设计等等原因,这三点并不能很好的融合在一起。虽说闻道有先后,术业有专攻,但能够有一台融会贯通的产品,不是...
- 三国志战略版:S5赛季装X指南,开荒不是一成不变,需要因地制宜
-
大家好我是零氪玩家花席,S5赛季已经开始,因为S5赛季的野地阵容和S4赛季没有区别,所以S5赛季开荒相对不难。你在S4有经验,并且多了很多武将和战法,还能用150赛季功勋兑换7500战法点。S5赛季新...
- 聊聊松下S5M2和S5M2X的区别(松下s5k和s5c有什么区别)
-
先简单说下哪里不同:12bitRAWHDMI外录支持直接将视频录制到USB-SSD上多了All-Intra和ProRes编码支持有线/无线IP推流,USB网络连接黑化的机身不过要特别强调一下,S5...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 基础教程 (29)
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 选择器 (30)
- CSS 轮廓 (30)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 中级教程 (30)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)