侯体宗的博客
  • 首页
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

详解Web前端性能优化详解之资源合并与压缩

前端  /  管理员 发布于 7年前   276

资源合并与压缩两个目的

  1. 减少http请求数量
  2. 减少请求资源的大小

google首页案例学习

  1. html压缩
  2. css压缩
  3. js的压缩
  4. 文件合并
  5. 开启 gzip

一、html 压缩

图一是新浪的首页显示是没有压缩的,图二的谷歌的首页是经过压缩的。

HTML代码压缩就是压缩这些在文本文件中的意义,但是在HTML中不显示的字符,包括空格,制表符,换行符等,还有一些其他意义的字符,如
HTML 注释也可被压缩。

如何进行 html 压缩

  1. 使用在线网站进行压缩
  2. nodejs提供了 html-minifier 工具
  3. 后端模板引擎渲染压缩

二、html 压缩

  1. 无效代码删除
  2. css 语义合并

如何进行 html 压缩

  1. 使用在线网站进行压缩
  2. 使用 html-minifier 对 html 中的css进行压缩
  3. 使用 clean-css 对css进行压缩

三、Js 压缩与混乱

  1. 无效字符的删除
  2. 剔除注释
  3. 代码语义的缩减和优化
  4. 代码保护

如何进行 js 压缩和混乱

  1. 使用在线网站进行压缩
  2. 使用 html-minifier 对 html 中的 js 进行压缩
  3. 使用uglifyjs2 对 js进行压缩

三、文件合并

文件合并与不合并对比

  1. 文件与文件之间有插入的上行请求,增加了 N-1 个网络延迟
  2. 受丢包问题影响更严重
  3. 经过代理服务器可能会被断开

文件合并存在的问题:

  1. 首屏渲染问题
  2. 缓存失效问题

解决文件合并存在的问题:

  1. 公共库合并
  2. 不同页面的合并
  3. 见机行事,随机应变

如何进行 js 压缩和混乱

  1. 使用在线网站进行压缩
  2. 使用 nodejs 实现合并

图片相关的优化
png8/png24/png32之间的区别

  1. png8 —— 256色 + 支持透明
  2. png24 —— 2^24色 + 不支持透明
  3. png32 —— 2^24色 + 支持透明
每种图片格式都有自己的特点,针对不同的业务场景选择不同的图片格式很重要

不同格式图片常用的业务场景

  1. jpg —— 大部分不需要透明图片的业务场景
  2. png 支持透明,浏览器兼容好
  3. webp压缩程度更好,在 ios webview 有兼容性疸
  4. svg 矢量图,代码内嵌,相对较少,图片样式相对简单的场景

不同格式图片常用的业务场景

  1. jpg —— 大部分不需要透明图片的业务场景
  2. png —— 大部分需要透明图片的业务场景
  3. webp —— 安卓全部
  4. svg矢量图 —— 图片样式相对简单的业务场景

进行图片压缩

针对真实图片情况,舍弃一些相对无关紧要的色彩信息

CSS雪碧图

把你的网站上用到的一些图片整合到一张单独的图片中

优点

减少你的网站的HTTP请求数量

缺点

整合图片比较大时,一次加载 比较慢

Image inline

将图片的内容内嵌到html当中,减少你的网站的HTTP请求数量

在安卓下使用webp

WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都非常优秀、稳定和统一。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    前端浏览器字体小于12px的解决办法
    下一条:
    浅谈移动端的自适应布局问题(响应式、rem/em、Js动态)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 使用 Alpine.js 排序插件对元素进行排序(0个评论)
    • 在js中使用jszip + file-saver实现批量下载OSS文件功能示例(0个评论)
    • 在vue中实现父页面按钮显示子组件中的el-dialog效果(0个评论)
    • 使用mock-server实现模拟接口对接流程步骤(0个评论)
    • vue项目打包程序实现把项目打包成一个exe可执行程序(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-03
    • 2018-04
    • 2018-05
    • 2018-06
    • 2018-09
    • 2018-11
    • 2018-12
    • 2019-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-04
    • 2021-05
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客