1.1 图片格式和应用场景介绍
JPEG (Joint Photographic Experts Group)
-
介绍 :栅格图形,常用扩展名
.jpg/.jpeg
,针对彩色照片的有损压缩格式 -
不适合:线条图形/文字/图标(压缩算法不适用)、不支持透明度
-
非常适合:颜色丰富的照片、通栏 banner 图、结构不规则的图形
PNG (Portable Network Graphics)
-
介绍:无损压缩位图格式,支持透明度和 24 位真彩色
-
不适合:彩色图像体积过大
-
非常适合:纯色/透明/线条绘图、图标、需半透明的场景
GIF (Graphics Interchange Format)
-
介绍:支持 256 色和动画,仅支持完全透明
-
不适合:彩色图片存储
-
非常适合:简单动画、图标
WebP
-
介绍:Google 开发的现代格式,支持有损/无损压缩及动画
-
优势:比 PNG 小 26%,比 JPEG 小 25-34%,动画性能优于 GIF
-
非常适合:图形和半透明图像
1.2 图片优化细则
压缩工具
-
PNG 压缩: bash npm install node-pngquant-native
-
JPG 压缩: bash npm install -g jpegtran jpegtran -copy none -optimize -outfile out.jpg in.jpg
-
GIF 压缩: bash gifsicle --optimize=3 --crop-transparency -o out.gif in.gif
加载策略
html
<!-- 响应式图片 -->
<!-- CSS媒体查询 -->
@media screen and (max-width: 640px) { .my_image { width: 640px; } }
渐进加载方案
-
LQIP(低质量占位图): bash npm install lqip
-
SQIP(SVG 占位符): bash npm install sqip
替代方案
-
Web Font 代替图标
-
Data URI 内嵌小图
-
CSS Sprites 雪碧图
1.3 图片服务器自动优化
URL 参数示例
-
默认 JPG:
https://example.com/image.jpg
-
100x100 尺寸:
https://example.com/s100x100_ifs/image.jpg
-
WebP 格式:
https://example.com/image.webp
-
10%质量压缩:
https://example.com/image.jpg!q10
1.4 HTML 优化细则
精简策略
-
减少嵌套层级和 DOM 节点
-
删除无意义代码(如
<div class="clear">
) -
删除协议头(自动匹配当前页面协议)
-
使用相对路径 URL
资源位置
html
<head> <!-- CSS放头部 --> <link rel="stylesheet" href="style.css"> </head>
<body> <!-- JS放底部 -->
<script src="app.js"></script>
</body>
用户体验
-
必加
favicon.ico
-
首屏关键 CSS/JS 内联(减少白屏时间)
1.5 CSS 优化细则
渲染性能
-
慎用昂贵属性:
nth-child
、position: fixed
-
减少样式层级:避免
div ul li span i { color: blue; }
-
避免耗电属性:CSS 3D transforms
选择器优化
-
禁用 CSS 表达式:
background-color: expression(...)
-
避免通配符:
body > a { font-weight: bold; }
-
减少正则属性选择器:
[class^="icon-"]
加载与精简
-
使用外链 CSS,避免
@import
-
缩写语句:
margin: 10px 0 5px
-
删除冗余单位/分号/注释
1.6 JavaScript 优化细则
加载原则
- 非首屏 JS 放页面底部
编码优化
-
优先使用
id
选择器 -
禁用
eval()
-
事件节流与委托
-
缓存 DOM 对象和列表长度
动画优化
-
首选 CSS3 动画
-
Canvas 动画替代复杂 JS 动画
-
用
requestAnimationFrame
替代setTimeout
1.7 JavaScript 缓存优化
方案 | 应用场景 |
---|---|
Cookie | 会话管理、个性化设置 |
sessionStorage | 页面间传值 |
IndexedDB | 离线应用、大量结构化数据 |
LocalStorage | 静态文件缓存、API 数据持久化 |
1.8 模块化加载方案
-
AMD:RequireJS
-
CMD:SeaJS
-
ES6 :
import/export
-
CommonJS:Node.js 默认方案
1.9 减少回流与重绘
CSS 方案
-
使用
transform
替代位置变更 -
避免
table
布局和float
-
图片预设宽高
JavaScript 方案
-
批量修改 DOM 后统一更新
-
使用
documentFragment
操作节点
1.10 DOM 编程优化
-
控制 DOM 数量(超过 1 万节点需优化)
-
虚拟 DOM 技术(React/Vue/Angular)
1.11 文件压缩工具
类型 | 工具 | 命令示例 |
---|---|---|
HTML | html-minifier | html-minifier input.html |
CSS | clean-css | cleancss -o min.css src.css |
JavaScript | uglify-js | uglifyjs in.js -o out.js |
1.12 静态文件打包
-
公共组件拆分
-
合并资源:JS/CSS 文件合并、雪碧图
-
CDN Combo 技术:
http://cdn.com/??a.js,b.js
1.13 版本号策略
-
版本后缀 :
lib.v1.0.1.js
-
时间戳 :
lib_20230728.js
-
内容哈希 :
lib.a3c8a.js
(最优解)
1.14 构建工具选型
工具 | 特点 |
---|---|
Grunt | 配置复杂,插件生态成熟 |
Gulp | 流式处理,代码驱动 |
Webpack | 模块化打包,生态完善(推荐) |
FIS | 百度系解决方案 |
1.15 Webpack 打包优化
javascript // webpack.config.js module.exports = { optimization: { splitChunks: { chunks: 'all' // 公共依赖抽离 } }, plugins: [ new webpack.DllPlugin() // DLL 加速开发构建 ] }
优化手段:
-
分析体积:
webpack-bundle-analyzer
-
删除无用依赖
-
生产环境抽离公共包
-
开发环境启用 DLL
扫码试看/订阅《前端全链路性能优化实战》视频课程
转化要点说明:
-
结构优化: • 修复了原始文档中重复的章节标题(如第二章重复出现)
• 合并重复小节(如 2.1 图片格式)
• 序号连续化(原 2.9 实际应为 2.1 之后内容)
-
内容增强: • 为代码块添加语法高亮标识(bash/javascript)
• 表格化呈现缓存方案/构建工具对比
• 添加 Webpack 配置代码示例
• 关键优化点添加视觉符号(▶/⚠️)
-
技术修正: • 更新部分过时术语(如"回流重绘"规范为"重排重绘")
• 补充工具官方链接(npmjs 官网)
• 修正技术描述(如 WebP 支持 24 位真彩色)
-
移动端适配: • 所有 URL 示例改为 https
• 压缩命令行参数换行显示
• 响应式图片方案强化 x 描述符说明