现代互联网时代,打开一个Web平台,是留下还是离开,只需要 1 分钟,因此前端的性能优化至关重要。
由于前端优化不佳,大多数网站无法提供令人满意的用户体验,最常见的情况是数据加载和图像优化不佳,本文分享几个优化策略。
资源(静态资源)压缩是指从 html、css 和 JavaScript 中删除不需要加载的不必要的冗余数据的过程。这包括删除代码注释和格式、空白字符、未使用的代码、换行符等。
缩小 HTML、CSS 和 JavaScript 将加快前端加载时间,因为它减少了需要从服务器请求的代码量。
生成 HTML、CSS 和 JavaScript 代码的优化版本可以借助工具,如下:
HTML: PageSpeed Insights 、HTML Minifier。
CSS: cssmin.js、Chrome Dev Tools 中的 Coverage 工具、YUI Compressor。
JavaScript: JSMin、Chrome Dev Tools 中的 Coverage 工具。
对于WEB项目,文件越大,加载所需的时间就越长,现代WEB平台通常有大量的 HTML、CSS 和 JavaScript 包。
通过使用合适的方法压缩文件,可以轻松地对前端的加载时间产生重大影响。以下是可以遵循的两个不错的文件压缩选项:
Gzip :最流行的数据压缩和解压缩方法,所有现代浏览器都支持,Gzip 在将站点的 HTML、CSS 和 JavaScript 包发送到浏览器之前先在服务器端对其进行压缩,然后在客户端解压缩文件并传送内容。 Brotli :与当前可用的压缩方法相比,它提供了最佳的压缩率,根据 CertSimple 的研究,Brotli 压缩 JavaScript 文件比 Gzip 小14%,而 HTML 和 CSS 压缩率比 Gzip 好 21% 和 17%。
说到网站,图像是重要的组成部分,互联网上93.7%的网站至少使用一种图像文件格式,因为它们有助于提高用户参与度,更加吸引用户眼球。
但是,使用图像的负面影响是会对前端加载时间产生不利影响。但是,现在有多种方式可以优化图像:
使用 webp 和 avif 等新图像格式比 jpg 和 png 等旧格式具有更好的性能。
webp 比 png 小 26%,比 jpg 小 25-35%。avif 比 jpg 小 50%,比 webp 小20%。
但是,缺点是浏览器支持还不够普遍。webp 最近获得了浏览器支持的普遍支持,可能存在旧版本不支持它。另一方面,avif 仅在 Chrome 和 Opera 中得到了支持。
减少图像加载时间和提高网站性能的另一种方法是使用响应式图像。超过50%的流量来自智能手机和平板电脑,将图像缩放到主流设备尺寸并使用。
除了选择合适的格式和尺寸外,还有其他几种方法,通过图像优化来减少前端加载时间,以下是可以使用的一些其他方法:
图像压缩
使用渐进式 JPEG
为连接速度较慢的用户提供较小的图像
使用 HTTP/2 、HTTP/3 而不是 HTTP/1.1
使用图像集
通常,前端向服务器发出的请求越多,加载的时间就越长。因为在呈现页面之前,向服务器发送任何请求都需要完全通信。可以通过多种方式来减少加载页面所需的服务器请求数量。
CSS Sprites :这是减少服务器调用次数的最简单方法之一,主要是减少UI相关的图片资源。实现原理不是加载10个独立的图像到网站,而是使用图像集合拼接成一个图像文件,然后通过使用 CSS 中的 background-image 和 background-position 属性来显示所需的图像区域。这样做可以减少了所需的服务器请求数量。
减少第三方插件的大量外部请求。
防止链接到不存在的文件。
此外,还可以查看服务器端渲染以加快应用程序的初始加载速度。
自定义字体已经变得非常流行,因为它有助于为网站添加个性化展示,但这些是以牺牲性能为代价。
自定义字体的大小可能非常大,特别是中文字体,而网络字体(例如 Google 字体)会将 HTTP 请求添加到外部资源,这会影响页面渲染的速度。
以下是在网站中使用字体时可以采取的优化措施:
将字体转换为最有效的格式:加载像 WOFF2 这样的现代格式可以使字体文件大小比其他格式减少约 30%。
子集字体以删除未使用的字符:综合字体文件包含许多可能永远不会使用的语言的字符。通过子集字体,可以从字体中删除不需要的字符,只保留需要在网站上编写内容的内容。
预加载页面明确用到的字体。
延迟加载有助于进一步缩短前端加载时间。使用延迟加载,网页首先只加载需要的内容,并在用户需要时加载剩余的内容。
除了延迟占位符加载之外,还有其他几个选项,例如,原生延迟加载和模糊图像效果。
如果不加缓存,用户每次访问都需要重新下载所有的资源,避免类似现象的最佳方法是使用缓存技术。如果配置适当,浏览器会将文件存储在其本地缓存中,并避免为来自服务器的后续页面访问加载相同的资源。
缓存服务器:用户请求从缓存服务器集合发送到最近的缓存服务器,即CDN。
内存缓存:通过将数据的某些部分(例如:JavaScript 变量)存储在内存中,无需为路由更改重新加载它们。
磁盘缓存:类似于内存缓存,不同之处在于它使用通常由浏览器处理的传统文件存储。
资源预取是另一种可用于优化前端数据加载性能的增强技术。作为开发人员,比浏览器更了解应用程序。因此,预取使用此信息来提示浏览器即将可能需要的资源。
预取加载资源以预期它们需要减少资源的等待时间。主要有三种类型的预取。虽然链接预取是最流行和最广泛使用的方法,但 DNS 预取和预渲染也是有用的选项。
链接预取使浏览器能够收集用户可能在最近的将来请求的资源。因此,开发人员可以假设用户可能访问特定网页的位置。
但是,链接预取仅适用于图像和 JavaScript 等可缓存资源。
每当用户请求托管在特定 IP 地址中的资产时,就会执行 DNS 查找以查找 IP 地址所属的域名。
DNS 预取允许浏览器在后台对网页中的链接执行 DNS 查找,同时用户浏览当前页面,以最大限度地减少用户在启用 DNS 预取的情况下单击链接时的延迟。
前端内容(包括 HTML 页面、样式表、JavaScript 文件和图像)的加载速度可以使用 CDN 进行优化,效果也是最明显的。CDN 是一组分布在多个地理位置的服务器,用于存储内容的缓存版本以快速响应给最终用户。
还有一种特定类型的 CDN,称为图像 CDN,它非常擅长优化图像。有了这些,可以节省40-80%的图像文件大小。鉴于图像通常占据页面重量的一半以上,为图像集成 CDN 可以显着提高加载速度。
性能黄金法则:80-90% 的最终用户响应时间用于下载前端组件,例如图像、样式表、脚本等。
因此,优化前端数据加载对于降低跳出率和增加用户在网站上的停留时间至关重要。
在程序开发中,经常会使用到for循环的,但是很多人写的for循环效率都是比较低的,下面就举例说明,并总结优化for循环的方法,来提高我们程序的执行效率。
网站的加载速度不仅影响着用户体验,也会影响搜索引擎的排名,在百度推出“闪电算法”以来,将网站首屏打开速度被列入优化排名行列,作为前端开发的我们需要如果来优化网站的打开速度呢?下面就整理挖掘出很多细节上可以提升性能的东西分享给大家
DocumentFragments是DOM节点。它们不是主DOM树的一部分。通常的用例是创建文档片段,将元素附加到文档片段,然后将文档片段附加到DOM树。在DOM树中,文档片段被其所有的子元素所代替。因为文档片段存在于内存中,并不在DOM树中
对于代码裡面的 if else,我们可以使用逻辑判断式,或更好的三元判断式来优化代码。除了可以降低维护项目的成本之外,还可以提升代码可读性。就让我们从最简单的 if else 例子开始吧。
小程序从发布到现在也已经有将近两年的时间,越来越来多的公司开始重视小程序生态带来的流量,今年也由于小程序平台对外能力的越来越多的开放以及小程序平台的自身优化,越来越多的开发者也自主的投入到小程序的开发当中
无论你正在将 GIF 动图转换为 MP4 视频,还是手头已经有一大堆 MP4 视频,你都可以优化文件结构,以使得这些视频更快地加载和播放。通过重组 atoms 将 moov 放到文件开头,浏览器可以避免发送额外的 HTTP range request 请求来搜寻和定位 moovatom
要优化 Web 服务器的性能,我们先来看看 Web 服务器在 web 页面处理上的步骤:Web 浏览器向一个特定的服务器发出 Web 页面请求; Web 服务器接收到 web 页面请求后,寻找所请求的 web 页面,并将所请求的 Web 页面传送给 Web 浏览器; 显示出来
浏览器下载完页面所有的资源后,就要开始构建DOM树,于此同时还会构建渲染树(Render Tree)。(其实在构建渲染树之前,和DOM树同期会构建Style Tree。DOM树与Style Tree合并为渲染树)
写篇文章的目的,是以开放小程序代码的层面的优化。包括:条件判断将wx:if换成了hidden 、页面跳转请销毁之前使用的资源、列表的局部更新、小程序中多张图片懒加载方案、Input状态下隐藏input,应预留出键盘收起的时间
生活在信息爆炸的今天,我们每天不得不面对和过滤海量的信息--无疑是焦躁和浮动的,这就意味着用户对你站点投入的时间可能是及其吝啬的(当然有一些刚需站点除外)。如何给用户提供迅速的响应就显得十分重要了
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!