http
请求的过程是前端性能优化的核心
资源的合并 => 减少http请求数量
资源的压缩 => 减少请求资源的大小。
1.html
压缩
HTML
代码压缩就是压缩一些在文本文件中有意义,但是在HTML
中不显示的字符,包括空格,制表符,换行符等,还有一些其他意义的字符,如HTML
注释也可以被压缩;
如何进行html
压缩
-
使用在线网站进行压缩;
-
nodejs
提供的html-minifier
工具; -
后端模板引擎渲染压缩
真实的开发中一般是通过构建工具进行压缩的,比如 webpack。
2.css
代码压缩
分为两部分:
-
无效代码的压缩;
-
css
语义合并;
如何进行css
压缩
-
使用在线网站进行压缩;
-
使用
html-minifier
对html
中的css
进行压缩; -
使用
clean-css
对css
进行压缩
3.js
压缩与混乱
包括:
-
无效字符的删除(空格,回车等);
-
剔除注释;
-
代码语义的缩减和优化。比如一些变量的长度的缩短,对无效代码的优化
-
代码保护。js压缩使代码混乱,不可读
二、图片相关的优化
不同格式图片常用的业务场景
-
jpg
有损压缩,压缩率高,支持透明;应用:大部分不需要透明图片的业务场景; -
png
支持透明,浏览器兼容好;应用:大部分需要透明图片的业务场景; -
webp
(2010
年由谷歌推出)压缩程度更好,在ios webview
中有兼容性问题;应用:安卓全部; -
svg
矢量图,代码内嵌,相对较小,用于图片样式相对简单的场景;应用:比如logo
和iconfont
;
1.图片压缩
针对真实图片情况,舍弃一些相对无关紧要的色彩信息,对图片进行压缩;比如在线压缩网站:https://tinypng.com/
2.css
雪碧图
将网站上用到的一些图片整合到一张单独的图片中,从而减少网站HTTP
请求数量。原理为:设定整张雪碧图可示区域,将想要显示的图标定位到该处(左上角);缺点:整合图片比较大时,一次加载比较慢
很多情况下,并不是所有的小图标都放在一张雪碧图中,而是会适当进行拆分。现在使用雪碧图的场景比较少了。
自动生成雪碧图样式的网站:http://www.spritecow.com/
3.网页内联图片(Image inline
)
将图片的内容内嵌到html
当中,减少网站的HTTP
请求数量,常用于处理小图标和背景图片。
这里提供一个将:image
转 DataUrI
的网址:http://tool.c7sky.com/datauri/
缺点:
-
浏览器不会缓存内联图片资源;
-
兼容性较差,只支持
ie8
以上浏览器; -
超过
1000kb
的图片,base64
编码会使图片大小增大,导致网页整体下载速度减慢;
所以要根据场景使用,不过内联图片减少HTTP
请求的优点还是很显著的。比如,在开发中小于4KB
或8KB
的图片都会通过构建工具自动inline
到HTML
中,这种情况下Image inline
带来的图片大小增长其实是比增加HTTP
请求次数更优的。
4.矢量图SVG
与iconfont
使用iconfont
解决icon
问题
应尽量使用该方式,比如可以采用阿里巴巴矢量图库
SVG
意为可缩放矢量图形(Scalable Vector Graphics
)。SVG
使用 XML
格式定义图像。
在线转换网站:http://www.bejson.com/convert/image_to_svg/
5.webp
webp
的优势体现在它具有更优的图像压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha
透明以及动画的特性。在JPEG
和PNG
上的转化效果都非常优秀、稳定和统一。安卓上不存在兼容性问题,推荐安卓下使用。
可以通过在线网站将图片转换为webp
:https://zhitu.isux.us/