文章目录
  1. 1. 套路1:合并Js文件和CSS
  2. 2. 套路2:Sprites图片技术
  3. 3. 套路3:压缩文本和图片
  4. 4. 套路4:延迟显示可见区域外的内容
  5. 5. 套路5:确保功能图片优先加载
  6. 6. 套路6:重新布置Call-to-Action按钮
  7. 7. 套路7:图片格式优化
  8. 8. 套路8:使用 Progressive JPEGs
  9. 9. 套路9:精简代码
  10. 10. 套路10:延迟加载和执行非必要脚本
  11. 11. 套路11:使用AJAX
  12. 12. 套路12:自动化的页面性能优化
  13. 13. 主流的前端性能优化、自动化解决的构建工具
  14. 14. 实例分析
  15. 15. 前端性能测试工具
  16. 16. 参考阅读

本文记录了一些前端页面访问速度优化的常用套路,结合自身优化过的几个站点实例,给大家一些启发和共鸣!希望能帮助到更多的同学!

套路1:合并Js文件和CSS

将JS代码和CSS样式分别合并到一个共享的文件,这样不仅能简化代码,而且在执行JS文件的时候,如果JS文件比较多,就需要进行多次“Get”请求,延长加载速度,将JS文件合并在一起后,自然就减少了Get请求次数,提高了加载速度。

套路2:Sprites图片技术

Spriting是一种网页图片应用处理方式,它是将一个页面涉及到的所有零星图片都包含到一张大图中去,然后利用CSS技术展现出来。这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了,可以减少了整个网页的图片大小,并且利用CSSSprites能很好地减少网页的http请求,从而大大的提高页面的性能。CSSSprites在国内很多人叫css精灵,很早就有了,在很多大型网站都有用到,特别是一些所有页面都存在的图标用得比较多,很好的提升加载速度。

套路3:压缩文本和图片

压缩技术如gzip可以有效减少页面加载的时间。包括HTML,XML,JSON(JavaScript对象符号),JavaScript和CSS等,压缩率都可以在大小70%左右。文本压缩用得比较多,一般直接在空间开启就行,而图片的压缩就比较随意,很多都是直接上传,其实还有很大的压缩空间。这部分的压缩方法可以借助一些工具,工具使用可以参考如下博文:

套路4:延迟显示可见区域外的内容

为了确保用户可以更快地看见可见区域的网页可以延迟加载或展现可见区域外的内容,为了避免页面变形,可以使用占位符标签制定正确的高度和宽度。比如WP的jQueryImage LazyLoad插件就可以在用户停留在第一屏的时候,不加载任何第一屏以下的图片信息,只有当用户把鼠标往下滚动的时候,这些图片才开始加载。这样很明显提升可见区域的加载速度,提高用户体验。

套路5:确保功能图片优先加载

网站主要考虑可用性的重要性,一个功能按钮要提前加载出来,用户进入下载页,一个只需要8s时间的下载花了5s在等待、寻找下载按钮图片,谁能忍受?

套路6:重新布置Call-to-Action按钮

其实这个和上面一条是差不多的,都是从用户体验速度着手,跳过了网页的整体加载速度。速度没变,只是让一些行为按钮提前,Call-to-Action按钮一般习惯设计在页面底部,这样的习惯对于用户来说并不总是好的,购买用户需要等到最下面加载出来才能点击下一步操作。可以调整CTA按钮的位置或使用滑动的图片按钮。很多大型购物网站的加入购物车就是这种类型。

套路7:图片格式优化

不恰当的图像格式是一种极为常见的减慢加载速度的罪魁祸首。正确的图片格式可以让图片缩小数倍,如果保存为最佳格式。可以节省大量带宽,减少处理时间时间,大大加快页面加载速度,这是一种很常见的做法。能用JPG就不用PNG。当然JPG也还可以进一步优化的,不信,请看套路8

套路8:使用 Progressive JPEGs

ProgressiveJPEGs图片是JPEG格式的一个特殊变种,名为“高级JPEG”。在创建高级JPEG文件时,数据是这样安排的:在装入图像时,开始只显示一个模糊的图像,随着数据的装入,图像逐步变得清晰。它相当于交织的GIF格式的图片。高级JPEG主要是考虑到使用调制解调器的慢速网络而设计的,快速网络的使用者通常不会体会到它和正常JPEG格式图片的区别。对于网速比较慢的用户,这无疑有很好的体验。

套路9:精简代码

这个可以说是最直接的一个方法,也是用得比较多的,对网页代码进行瘦身,删除不必要的沉冗代码,比如不必要的空格、换行符、注释等,包括JS代码中的无用代码也需要清除。其中对于注释代码的清除可能有些人存在误区,甚至有的在里面堆砌关键词。这个比较好理解,可以直接用很多在线工具,进行.min.js/min.css,压缩,图片/图标用Base64进行代码压缩。

套路10:延迟加载和执行非必要脚本

网页中有很多脚本是在页面完全加载完前都不需要执行的,可以延迟加载和执行非必要脚本。这些脚本可以在onload事件之后执行,避免对网页上重要内容的呈现造成影响。这些脚本可能是你自己网页的脚本,往往更多的是一些第三方脚本,这样的有很多,比如评论、广告、智能推荐、百度云图、百度统计,分享等等,这些完全可以等主体内容加载完后再执行。这一点在,小枫街舞 项目中有很好的体现,如下图所示,分享插件的脚本直到最后整个页面布局都加载完了之后才延时加载出来。

套路11:使用AJAX

AJAX即“Asynchronous Javascript +XML“,是指一种创建交互式网页应用的网页开发技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用AJAX)如果需要更新内容,必须重载整个网页面。这个对很多FE来说应该都是很熟悉的了,如果不熟悉,可以戳下面链接。

套路12:自动化的页面性能优化

随着Node.js在前端的普及,现在的前端工程已经越来越趋近自动化、模板化的形式,优点有很多,可以快速协同开发,快速迭代,节约开发成本。(换句话说,就是把以上的所有套路都自己自定义到一个引擎里,每次创建新工程都可以服用的技术。)例如大家耳熟能熟的就有Angular.js,React.js,hexo,等等!如果你想自己构建一个专属的自动化引擎,可以参考下列博文!(PS : 博主以前自己也写过一个Blog自动化生成引擎,对能力提升很有帮助,感兴趣的可以试试)

主流的前端性能优化、自动化解决的构建工具

很多楼上所述的套路可以用构建工具被集成,一般将要发布在线上的企业级应用都会使用构建工具,目前市场上比较主流,值得学习的构建工具有下列几种:

实例分析

持续更新,后面会以自己项目优化历程为实例,尽请期待。

前端性能测试工具

参考阅读

文章目录
  1. 1. 套路1:合并Js文件和CSS
  2. 2. 套路2:Sprites图片技术
  3. 3. 套路3:压缩文本和图片
  4. 4. 套路4:延迟显示可见区域外的内容
  5. 5. 套路5:确保功能图片优先加载
  6. 6. 套路6:重新布置Call-to-Action按钮
  7. 7. 套路7:图片格式优化
  8. 8. 套路8:使用 Progressive JPEGs
  9. 9. 套路9:精简代码
  10. 10. 套路10:延迟加载和执行非必要脚本
  11. 11. 套路11:使用AJAX
  12. 12. 套路12:自动化的页面性能优化
  13. 13. 主流的前端性能优化、自动化解决的构建工具
  14. 14. 实例分析
  15. 15. 前端性能测试工具
  16. 16. 参考阅读