Link-Fight / Link-Fight.github.io

Link_Fight博客
5 stars 0 forks source link

工作日常 2019/3/26 #17

Open Link-Fight opened 5 years ago

Link-Fight commented 5 years ago

按照谷歌提供的衡量网页质量的自动化工具灯塔提供的指标来看,主要有以下几个类目的指标:

Performace

1 'First Contentful Paint'

(FCP)测量的是从浏览器导航到该页到DOM渲染第一部分内容的时间。对于用户而言,这代表这页面实际加载的反馈。

2 'First Meaningful Paint'

(FMP)首次有效渲染

3 'Speed Index'

表示页面内容填充的速度

4 'First CPU Idle'

第一个CPU空闲度量标准衡量页面的最小交互时间:
屏幕上的大多数(但可能不是全部)UI元素都是交互式的。
该页面在合理的时间内平均响应大多数用户输入。

5 'Time to Interactive'

页面完全交互所需的时间。

6 'Estimated Input Latency'

应用程序在页面加载最繁忙的5s窗口中响应用户输入所需的时间(毫秒)。如果您的延迟超过50毫秒,用户可能会认为您的应用程序是滞后的。

Opportunities 优化方式

1 Eliminate render-blocking resources

消除渲染阻塞资源(有资源正在阻止页面的第一次绘制。考虑以内联方式交付关键的JS/CSS,并推迟所有非关键的JS/样式。)

2 Remove unused CSS

从样式表中删除死掉的规则,并推迟不用于折叠内容的CSS的加载,以减少网络活动所消耗的不必要字节。

可以使用Coverage选项卡查看已使用和未使用的CSS

Diagnostics

1 Ensure text remains visible during webfont load

2 Serve static assets with an efficient cache policy

3 Minimize Critical Requests Depth

4 Defer offscreen images

5 Minify CSS,Minify JavaScript

6 Efficiently encode imagesServe images in next-gen formats

7 Enable text compression

8 Preconnect to required origins

Link-Fight commented 5 years ago
预加载

<link rel="preload"> 将告知浏览器当前导航需要某些资源,应尽快开始获取。

<link rel="preload" as="script" href="super-important.js">
<link rel="preload" as="style" href="critical.css">

要注意里面的as属性,它将告知浏览器您将要加载的资源类型,以便浏览器可以正确处理该资源。如果该资源类似设置错误,浏览器将不会使用预加载的资源。

如果使用<link rel="preload">获取的资源如果在3s内没被页面使用,将会在chrome的console中触发警告: image

预连接

<link rel="preconnect">告知浏览器您的页面打算与另一个起点建立连接,以及您希望尽快启动该过程。

在速度较慢的网络中建立连接通常非常耗时,尤其是要建立安全连接时,因为这一过程可能涉及 DNS 查询、重定向以及指向处理用户请求的最终服务器的若干往返。 提前处理好上述事宜将使您的应用提供更加流畅的用户体验,且不会为带宽的使用带来负面影响。 建立连接所消耗的时间大部分用于等待而不是交换数据。

只需向您的页面添加一个 link 标记,便可告知浏览器您的意图:

<link rel="preconnect" href="https://example.com">

预提取

<link rel="prefetch">的目标是利用机会使非关键操作更早地触发。

实现方式是告知浏览器未来导航或用户互动将需要的资源,例如,如果用户做出我们期望的行为,则表示其稍后可能需要某些资源。当前页面完成加载后,且在带宽可用的情况下,这些资源将在Chrome中以Lowest优先级被提取。

这意味着,prefetch是预测用户下一步的操作并为其做好准备。例如检索结果列表中某个产品的详情页面或检索内容的下一页。

<link rel="prefetch" href="page-2.html">

请记住,预提取不可递归使用。 在上方示例中,您仅可以检索 HTML;page-2.html 需要的任何资源将不会提前下载,除非您针对这些资源也设置明确的预提取。