仅需 5 分钟,快速优化 Web 性能的10 个手段,web网站开发


使用现代图像格式可以真正提高性能。 WebP 图像比 JPEG 和 PNG 小,通常小25%-35%WebP 也被浏览器广泛支持。

我们使用imagemin npm 包并为其添加WebP插件。 以下代码将我的图像的WebP版本输出到dist文件夹中。

const imagemin = require(‘imagemin’);

const imageminWebp = require(‘imagemin-webp’);

(async() => {

const files = await imagemin(

[‘img/*.jpg’],

{

destination: ‘dist/img’,

plugins: [

imageminWebp({quality: 50})

]

}

);

console.log(files);

})();

我们再次看一下文件大小:

在这里插入图片描述

结果表明,与原始图像相比,文件大小减少了98%,与压缩的 JPG 文件相比,WebP 对图像的压缩效果更加明显,WebP版本比压缩的JPEG版本小43%

4.图像延迟加载


延迟加载图像是一种稍后而不是提前加载屏幕外图像的技术。当解析器遇到正确加载的图像时,会减慢初始页面加载速度。通过延迟加载,可以加快这个过程并在以后加载图像。使用lazysize很容易做到这一点。使用lazysize脚本和浏览器对loading属性的支持,你可以这样优化:

改成:

该库会处理其余的工作,你可以使用浏览器验证这一点。打开你的网站,找到你的图像标签。如果类从lazyload更改为lazyloaded,它就可以工作。

5.缓存 http 头


缓存是一种快速提高站点速度的方法。它减少了访问者的页面加载时间。我们可以告诉浏览器在特定的时间缓存文件,如果你对后台的知识有些了解,那么配置缓存方不是很难的事情。

我们可以使用以下 API 进行缓存:

6. 内联关键的 CSS


CSS 是阻塞渲染的,这意味着浏览器必须先下载并处理所有CSS文件,然后才能绘制像素。 通过内联关键的 CSS,可以大大加快此过程。 我们可以通过以下步骤完成此操作:

识别关键的 CSS

如果你不知道你的关键CSS是什么,你可以使用Critcal, CriticalCSSPenthouse。所有这些库都从给定视口可见的HTML文件中提取CSS。

criticalCSS 事例如下:

var criticalcss = require(“criticalcss”);

var request = require(‘request’);

var path = require( ‘path’ );

var criticalcss = require(“criticalcss”);

var fs = require(‘fs’);

var tmpDir = require(‘os’).tmpdir();

var cssUrl = ‘https://web.dev/app.css’;

var cssPath = path.join( tmpDir, ‘app.css’ );

request(cssUrl).pipe(fs.createWriteStream(cssPath)).on(‘close’, function() {

criticalcss.getRules(cssPath, function(err, output) {

if (err) {

throw new Error(err);

} else {

criticalcss.findCritical(“https://web.dev/”, { rules: JSON.parse(output) }, function(err, output) {

if (err) {

throw new Error(err);

} else {

console.log(output);

// save this to a file for step 2

}

});

}

});

});

内联关键 CSS

HTML解析器遇到样式标签,并立即处理关键的CSS。

滞后非关键CSS

非关键的CSS不需要立即进行处理。 浏览器可以在onload事件之后加载它,因此用户不必等待。

7. JavaScript 异步/延迟加载/延迟加载


HTML 也是阻塞渲染,浏览器必须等待 JS 执行后才能完成对HTML的解析。但是我们可以告诉浏览器等待JavaScript执行。

异步加载JavaScript

使用属性async,可以告诉浏览器异步加载脚本。

延迟JavaScript

defer属性告诉浏览器在 HTML 解析器解析完文档之后运行脚本,但在事件发生之前,DOMContentLoaded会被触发。

重复排序内联的脚本

内联脚本立即执行,浏览器对其进行解析。 因此,您可以将它们放在HTML的末尾,紧接在body标记之前。

8.使用资源提示优化性能


HTML5的资源提示(Resource Hints)可以简单地理解为预加载,浏览器根据开发者提供的后续资源的提示进行有选择性的加载和优化。“有选择性”这一项是必须的且极其重要的,也是有别早先替代方案的重点,因为很多情况下,预加载会受到所分配到的计算资源以及带宽资源的限制,浏览器有权放弃那些成本较高的加载项。

资源提示帮助开发人员告诉浏览器稍后可能加载的页面。该规范定义了四种原语

  • preconnect

  • dns-prefetch

  • prefetch

  • prerender

此外,对于资源提示,我们使用了链接属性的preload关键字。

preconnect

预链接, 使用方法如下:

我们访问一个站点时,简单来说,都会经过以下的步骤:

  1. DNS 解析

  2. TCP 握手

  3. 如果为 Https 站点,会进行TLS握手

使用preconnect后,浏览器会针对特定的域名,提前初始化链接(执行上述三个步骤),节省了我们访问第三方资源的耗时。需要注意的是,我们一定要确保preconnect的站点是网页必需的,否则会浪费浏览器、网络资源。

DNS Prefetch

DNS 预解析, 这个大多数人都知道,用法也很简单:

DN S解析,简单来说就是把域名转化为ip地址。我们在网页里使用域名请求其他资源的时候,都会先被转化为ip地址,再发起链接。dns-prefeth使得转化工作提前进行了,缩短了请求资源的耗时。

什么时候使用呢?当我们页面中使用了其他域名的资源时,比如我们的静态资源都放在cdn上,那么我们可以对cdn的域名进行预解析。浏览器的支持情况也不错。

prefetch

预拉取, 使用方法如下:

link标签里的as参数可以有以下取值:

audio: 音频文件

video: 视频文件

Track: 网络视频文本轨道

script: javascript文件

style: css样式文件

font: 字体文件

image: 图片

fetch: XHR、Fetch请求

worker: Web workers

embed: 多媒体请求

object: 多媒体请求

document: 网页

预拉取用于标识从当前网站跳转到下一个网站可能需要的资源,以及本网站应该获取的资源。这样可以在将来浏览器请求资源时提供更快的响应。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

前15.PNG

前16.PNG

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处免费获取

上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

[外链图片转存中…(img-tVubdMWX-1712275747547)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

[外链图片转存中…(img-wSPqPtSX-1712275747547)]

[外链图片转存中…(img-6xdzY3Yr-1712275747547)]

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,详细完整版的JavaScript面试题文档,或更多前端资料可以点此处免费获取

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Web H5页面的性能优化可以从以下几个方面入手: 1. 减少HTTP请求数量:减少页面中的HTTP请求可以显著提高性能。可以通过合并CSS、JS文件、压缩图片等方式,减少HTTP请求数量。 2. 压缩文件大小:减小HTML、CSS和JS文件的大小可以减少加载时间,提高性能。可以使用压缩工具压缩这些文件,减小文件大小。 3. 使用缓存:将静态资源(例如图片、CSS和JS等)缓存在本地,可以大幅度减少HTTP请求。可以通过设置HTTP响应头中的缓存策略,让客户端缓存这些静态资源。 4. 优化图片:将图片压缩到合理的大小,并使用适当的图片格式,可以减少图片的加载时间。例如使用JPEG格式来存储照片,使用PNG格式来存储图形。 5. 使用CDN:使用CDN可以加速页面的加载速度。CDN会将静态资源缓存在全球各地的服务器上,当用户请求这些资源时,可以从离用户最近的服务器获取。 6. 延迟加载:将不必要的资源(例如图片、视频等)延迟加载,可以减少页面的加载时间。可以使用LazyLoad等工具来实现延迟加载。 7. 减少DOM操作:减少DOM操作可以减少页面的重绘和回流,提高性能。可以将多次DOM操作合并为一次操作,使用事件委托等方式来减少DOM操作。 总之,Web H5页面的性能优化要从多个方面入手,通过以上的方法可以使页面加载速度更快,提高用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值