前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你了解可显著提升加载性能的 103 Early Hints 状态码吗?

你了解可显著提升加载性能的 103 Early Hints 状态码吗?

作者头像
山月
发布2023-01-10 11:01:45
9460
发布2023-01-10 11:01:45
举报
文章被收录于专栏:服务器运维笔记

103 状态码目前还是一个实验性的状态码,用于做一些 preconnect/preload 网络的优化优化。

preconnect/preload

在浏览器加载文档(即 HTML 页面)时,可在 HTML 页面的 <link> 标签中,指明对某条资源的优化提示,被称为 Resource Hints。一般有以下几种:

  • preconnect:在向服务器请求 HTTP 资源时,首先要建立连接,而目前对于 js/css 大部分在 CDN 的第三方域名,在 HTML 页面指定 preconnect 可提前建立对该链接的连接。
  • preload:预加载 Javascript/CSS/Font 等资源,提高资源加载的优先级,详见 resource priority。比如某些字体文件,可提前加载,避免出现页面已加载完成,而字体无法查看的问题。

在 Chrome 浏览器控制台,可查看每条资源的优先级。

代码语言:javascript
复制
<link rel="preconnect" href="https://example.com" />

<link rel="preload" href="style.css" as="style" />
<link rel="stylesheet" href="style.css" />

103 Eayly Hints

而通过 HTML 的 link 标签提前声明对某些资源的优化提示,需要待 HTML 资源加载进行解析时,才能够获得提示。

「而 103 Early Hints,可以更早地声明对某些资源的提示,首先发送 103 状态码的临时响应,再最终响应 HTML 文档内容以及对应的状态码。」 显而易见,比在 HTML 中声明 Hints,将拥有更好的效果。

PS: 以上图片来自 Faster page loads using server think-time with Early Hints

响应报文如下所示,通过 link 响应头,完成以前 link 标签所做的事情。

代码语言:javascript
复制
103 Early Hint
Link: </image.png>; rel=preload; as=image

通过 103 优化后,网站的性能将得到显著提示,FCP/LCP 数据将有大约 10% 的提示。

PS: 数据以及图片来自 Early Hints update: How Cloudflare, Google, and Shopify are working together to build a faster Internet for everyone

示例

目前,仅有 1.6% 的网站使用了 103 状态码提升性能,数据详见 2022 年 HTTP 年鉴之 HTTP 篇。而使用 Preload 提升性能的网站,占到了 25%,数据详见 2022 年 HTTP 年鉴之 HTTP 篇。

如果能够将 HTML 中 link 标签优化为 103 Early Hints,将会有不错的性能提升。

以下是一家俄罗斯电商平台的 103 示例:

代码语言:javascript
复制
$ curl -I 'https://www.ozon.ru/' \ 
  -H 'sec-ch-ua: "Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "macOS"' \
  -H 'sec-fetch-dest: document' \
  -H 'sec-fetch-mode: navigate' \
  -H 'sec-fetch-site: same-origin' \
  -H 'sec-fetch-user: ?1' \
  --compressed
HTTP/2 103 
link: <//io.ozone.ru>; rel=preconnect, <//v.ozone.ru>; rel=preconnect, <//cdn1.ozone.ru>; rel=preconnect, <//cdn2.ozone.ru>; rel=preconnect, <//cdn0.ozone.ru>; rel=preconnect, <//cdn2.ozone.ru/s3/frontend-ozon-ru-public/fonts/GT-Eesti-Pro-Display-Bold.woff2>; as=font; crossorigin=anonymous; rel=preload, <//cdn2.ozone.ru/s3/frontend-ozon-ru-public/fonts/GT-Eesti-Pro-Display-Medium.woff2>; as=font; crossorigin=anonymous; rel=preload, <//cdn2.ozone.ru/s3/frontend-ozon-ru-public/fonts/GT-Eesti-Pro-Display-Medium-Italic.woff2>; as=font; crossorigin=anonymous; rel=preload, <//cdn2.ozone.ru/s3/frontend-ozon-ru-public/fonts/GT-Eesti-Pro-Display-Regular.woff2>; as=font; crossorigin=anonymous; rel=preload

HTTP/2 403 
date: Sat, 05 Nov 2022 04:14:25 GMT
content-type: text/html; charset=UTF-8
referrer-policy: same-origin
permissions-policy: accelerometer=(),autoplay=(),camera=(),clipboard-read=(),clipboard-write=(),fullscreen=(),geolocation=(),gyroscope=(),hid=(),interest-cohort=(),magnetometer=(),microphone=(),payment=(),publickey-credentials-get=(),screen-wake-lock=(),serial=(),sync-xhr=(),usb=()
cache-control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0
vary: Accept-Encoding
server: cloudflare
cf-ray: 7652c3301863cec9-SJC
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400

作业

  1. 103 状态码是什么意思
  2. 103 状态码是如何提升性能的
  3. 找到有 103 状态码的网站
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • preconnect/preload
  • 103 Eayly Hints
  • 示例
  • 作业
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档