angular、react、vuejs 是现在一些主流的 js 框架,那它们在构建网站或前端程序时,是如何保证性能,减少大家诟病的?今天这篇文章,就为大家介绍一些工具或技术技巧,来帮助前端工程师保证开发性能与效率,毕竟快过节了,要赶紧把研发和优化都做到位,少加班!
(图片来源:作者 dimitris kiriakakis 的原文)
如果网站页面超过 3 秒还未加载出来,会是什么结果?你会失去近 50% 的访客!也许这个数字让你有些意想不到。长时间加载对应用程序的转化率会产生负面影响,而减少页面的加载时间可以显著提升用户体验、提高效率、优化搜索等,最终保证产品的成功率。
想保证构建的网站或前端程序的性能,可以从哪些方面思考呢?接下来,我们就先谈如何衡量,再谈如何优化。
一、如何衡量性能?
首先,我们必须要有一些衡量性能的指标。在衡量前端应用程序的性能时,有两个工具推荐给大家:
(1) 谷歌浏览器lighthouse
(2) speedcurve
这两款工具都可以跟踪主要的性能 kpi(如页面响应速度指数 pagespeed index,页面变为可交互的时间 tti,首次对用户显示内容的时间 fcp等)。其中 lighthouse 包含在 chrome 开发工具里,通过分析网站/应用程序提供一些非常有用的提示,从而告诉开发人员如何提升相应的指标。使用 speedcurve,可以在任何时间监测所有这些 kpi 及其性能。
chrome 的lighthouse提示信息
衡量产品前端性能之后,下一步就要优化我们的网站,使其发挥最大作用。
二、如何优化?
(一)优化图像
任何一个网站,图像都是至关重要的部分。平均而言,图像类数据占 web页面加载数据的 60%以上,因此,图像的优化也是最重要的一环,其实也是最容易实现的。为什么这么说?可以从哪几方面入手?
1、调整图像大小
如何调整图像大小使其符合布局要求。最重要的一点是:检查图像的分辨率是否合适。此外,确保图像响应与布局响应相同。这方面可以推荐给大家一个很棒的工具——响应图像生成器(responsive image breakpoints generator),它可以生成不同版本的图像,可以根据你的需要或习惯,以及可使用的 html5 代码。这些代码还可以在任何前端应用程序或网站中使用。
如果对gulp感兴趣,可以使用 gulp-responsive 插件自动执行此过程。
响应式布局需要响应式图像
2、确保延迟加载
延迟加载可以通俗理解为不需要立即加载图像,但可以在之后需要的时候加载显示。这个概念,结合一下使用经验就容易理解了。无论使用哪个框架,都可以使用延迟加载图像的插件,如 vuejs 中的 v-lazy-image,当然开发者们也可以自己构建,不过需要检测元素进入或退出的时间。
3、图像传输:使用 cdn 进行
上面主要是从网站加载图像的大小和数量两个维度采取优化措施的,之后要考虑哪些问题呢?举一个例子,如果你想让你的网站在全球范围都是可用的,可以怎么做?这里向大家介绍 cdn 方法——内容分发网络来实现。
cdn 在其全球分布的服务器网络上缓存映像。它是如何帮助优化的?举个例子,你在欧洲,一个澳大利亚的用户向网站发送一个图像的请求,cdn 会从另一个,离这位澳大利亚用户更近的站点发送图像,而不是从欧洲的服务器上检索并发送图像,这就减少了加载图像所需的往返时间。
(二)css, js 和 html
几乎所有框架都提供了优化代码的方法,如代码拆分、摇树优化、压缩等,除了代码,还能优化什么?
1.优化 html 文档
html(几乎)是所有 web 应用程序的基础。在 html 文档中引用资源时,有下面两点建议想与大家分享!
(1)将 css 引用放在 html 头文件的顶部,确保渐进呈现。
(2)将 javascript 属性放在 html 主体的底部,并选择异步脚本加载。这可以防止任何 标记阻塞 html 的呈现过程。
2.确保只加载需要的东西
延迟加载组件和模块
angular、react 和 vuejs 都提供延迟加载,所以开发者只需根据自己的需要正确地分割代码,并在真正需要的时候加载所需模块。例如,一个电子商务网站,应该确保用户在主页时,购物车页面(模块)或支付页面(模块)没有被加载。
3.压缩和缓存
前端开发中需要的所有资源,比如图像或代码,是否都压缩,采取争取的缓存方式了?为什么要讲这一点?文件压缩可以让程序变得更轻,减少请求往返所需要的时间,最常用的文件压缩方法之一是 gzip,一种用于压缩代码块、文档、图像和音频文件的好方法。
brotli 是另一种文件压缩算法,并且越来越受欢迎。这个开源算法现在由谷歌和其他组织的软件工程师在定期更新维护。和现有方法相比,它能以更好的比率压缩文件。
此外,还可以通过修改它们的配置文件,如在 nginx 上启用 brotli 或在 apache 上启用 brotli,在 nginx、apache 或其他正在使用的服务器上选择喜欢的压缩方法。
谈到缓存,最常用的缓存技术是利用浏览器缓存,lighthouse 也推荐使用这个方法,同样可以通过修改服务器的配置文件来启用(启用浏览器缓存)。
总结
通过分享上面几个经验,总结为一个核心问题就是:前端问题,性能是一个重要的问题,需要前端工程师们认真地思考与对待。
最后,也希望这篇文章能帮助前端工程师,正在前往前端开发路上的小伙伴们一些帮助,在 review 的时候,别忘了确保前端的性能。
宁德时代有望在下半年重新夺回动力电池出货量冠军位置
回顾AliOS助力重庆实现转型的相关介绍
工业园区智慧住房建设管理软件系统开发
小米6将不搭载LOGO?国产小众PC逼格十足!
镀复SiO2膜的电容器介质膜
前端不哭!最新优化性能经验分享
LED处理器如何来选择
饱和蒸汽流量计可以进行温度补偿或者压力补偿
深圳市首家5G智慧医院启动建设 给患者带来一些与众不同的诊疗新体验
EEJournal的“用软件来定义一切”涉及了新的SDSoC设计环节
全球第一大智能手机操作系统Android的发展历史说明
嵌入式人脸识别门禁系统设计与实现
U-Mail邮件网关四大性能加固安全锁
国产显示屏产业获得了新的重大技术性突破
韩国电信为何拒绝华为作为其5G网络设备的供应商
人工智能技术在军事情报领域的应用背景
机器人遛机器狗:机器人创业公司完成800万美元A轮融资
u-blox LTE-M蜂窝通信模块销量达2500万
未来几乎不可能完成半导体产业巨额收购案
瑞萨M3芯片和高通8155芯片哪个好?瑞萨M3芯片和高通8155芯片的区别