当前位置: 首页 > news >正文

前端静态资源优化

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-childposition: 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

  • ES6import/export

  • CommonJS:Node.js 默认方案

1.9 减少回流与重绘

CSS 方案
  • 使用transform替代位置变更

  • 避免table布局和float

  • 图片预设宽高

JavaScript 方案
  • 批量修改 DOM 后统一更新

  • 使用documentFragment操作节点

1.10 DOM 编程优化

  • 控制 DOM 数量(超过 1 万节点需优化)

  • 虚拟 DOM 技术(React/Vue/Angular)

1.11 文件压缩工具

类型工具命令示例
HTMLhtml-minifierhtml-minifier input.html
CSSclean-csscleancss -o min.css src.css
JavaScriptuglify-jsuglifyjs in.js -o out.js

1.12 静态文件打包

  • 公共组件拆分

  • 合并资源:JS/CSS 文件合并、雪碧图

  • CDN Combo 技术:http://cdn.com/??a.js,b.js

1.13 版本号策略

  1. 版本后缀lib.v1.0.1.js

  2. 时间戳lib_20230728.js

  3. 内容哈希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

扫码试看/订阅《前端全链路性能优化实战》视频课程

转化要点说明:

  1. 结构优化: • 修复了原始文档中重复的章节标题(如第二章重复出现)

    • 合并重复小节(如 2.1 图片格式)

    • 序号连续化(原 2.9 实际应为 2.1 之后内容)

  2. 内容增强: • 为代码块添加语法高亮标识(bash/javascript)

    • 表格化呈现缓存方案/构建工具对比

    • 添加 Webpack 配置代码示例

    • 关键优化点添加视觉符号(▶/⚠️)

  3. 技术修正: • 更新部分过时术语(如“回流重绘”规范为“重排重绘”)

    • 补充工具官方链接(npmjs 官网)

    • 修正技术描述(如 WebP 支持 24 位真彩色)

  4. 移动端适配: • 所有 URL 示例改为 https

    • 压缩命令行参数换行显示

    • 响应式图片方案强化 x 描述符说明

http://www.dtcms.com/a/301981.html

相关文章:

  • WD5030A芯片24降12V,15A以内,应用于路由器、交换机和网络服务器,成本低大电流
  • 枚举策略模式实战:优雅消除支付场景的if-else
  • 6种将iPhone照片传输到Windows 10电脑的方法
  • Vue 正在热映模块
  • 安宝特案例丨AR+AI+SOP?3大技术融合革新军工航天领域
  • 组件化(一):重新思考“组件”:状态、视图和逻辑的“最佳”分离实践
  • 中兴云电脑W101D2-晶晨S905L3A-2G+8G-安卓9-线刷固件包
  • react前端样式如何给元素设置高度自适应
  • 四、计算机组成原理——第7章:输入/输出系统
  • Mac查看本机ip地址
  • 六轴机械臂cad【11张】三维图+设计说明书
  • GPU训练日志 (下)
  • Redis 服务挂掉排查与解决
  • STL学习(?、set容器)
  • 计算机毕业设计java在线二手系统的设计与实现 基于Java的在线二手交易平台开发 Java技术驱动的二手物品管理系统
  • 如何创建 Google 翻译桌面快捷方式
  • qt 心跳包
  • 【Linux篇】进程间通信:进程IPC
  • 搜索引擎高级搜索指令大全(Google、百度等浏览器通用)
  • R语言简介(附电子书资料)
  • 【kafka】消息队列
  • 深入Go并发编程:Channel、Goroutine与Select的协同艺术
  • Java BigDecimal详解:小数精确计算、使用方法与常见问题解决方案
  • 生产力效能跃升 金士顿DDR5 5600内存
  • 【正序拆解整数】2022-9-18
  • 二、Linux文本处理与文件操作核心命令
  • 群晖Synology Drive:打造高效安全的私有云协作平台
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博文章数据可视化分析-点赞区间实现
  • 持续集成CI与自动化测试
  • 越野新王豹 5:以极致可靠性诠释“安全是最大的豪华”