• HTTP资源预取


    资源预取

    preload
    作为元素 的属性 rel 的值,表示用户十分有可能需要在当前浏览中加载目标资源,所以浏览器必须预先获取和缓存对应资源。 使用方式如下:

    
      
      
    
    
      

    prefetch
    作为元素 的属性 rel 的值,是为了提示浏览器,用户未来的浏览有可能需要加载目标资源,所以浏览器有可能通过事先获取和缓存对应资源,优化用户体验。

    注意描述上的区别:preload是当前浏览器十分可能加载,所以必须预取和缓存的资源。prefetch 一般预加载的是其他页面会用到的资源。 因此,prefetch 不会像 preload 一样,在页面渲染的时候加载资源,而是利用浏览器空闲时间来下载。当进入下一页面,就可直接从 disk cache 里面取,既不影响当前页面的渲染,又提高了其他页面加载渲染的速度。

    preconnect
    是向浏览器提示用户可能需要来自目标资源源的资源,因此浏览器可以通过抢先启动与该源的连接来改善用户体验。
    用户代理应尽可能尝试启动预连接并执行完整的连接握手(DNS+TCP 用于 HTTP,DNS+TCP+TLS 用于 HTTPS 源),但允许选择执行部分握手(DNS 仅用于 HTTP , 和 DNS 或 DNS+TCP 用于 HTTPS 来源),或完全跳过它,由于资源限制或其他原因。

    此连接已获得但不直接使用。它将保留在 连接池中以供后续使用。

    使用方式如下:

    
    

    DNS-prefetch
    是尝试在请求资源之前解析域名。这可能是后面要加载的文件,也可能是用户尝试打开的链接目标。

    dns-prefetch 仅对跨域域上的 DNS 查找有效,因此请避免使用它来指向您的站点或域。这是因为当你打开这个页面,本站域名已经完成解析。

    使用方式:

     
    

    prerender prerender 就像是在后台打开了一个隐藏的 tab,会下载所有的资源、创建DOM、渲染页面、执行js等等。如果用户进入指定的链接,隐藏的这个页面就会立马进入用户的视线。 但是要注意,一定要在十分确定用户会点击某个链接时才使用该特性,否则客户端会无端的下载很多资源和渲染这个页面。 正如任何提前动作一样,预判总是有一定风险出错。如果提前的动作是昂贵的(比如高CPU、耗电、占用带宽),就要谨慎使用了。

    使用方法:

    
    

    HTTP2

    HTTP/2 是 HTTP 网络协议的一个重要版本。 HTTP / 2 的主要目标是通过启用完整的请求和响应多路复用来减少 延迟,通过有效压缩 HTTP 标头字段来最小化协议开销,并增加对请求优先级和服务器推送的支持。

    • 启动 HTTP/2(第 3 节)介绍了如何启动 HTTP/2 连接。
    • 帧(第4 节)和流(第 5 节)层描述了 HTTP/2 帧的结构和形成多路复用流的方式。
    • 帧(第 6 节)和错误(第 7 节) 定义包括 HTTP/2 中使用的帧和错误类型的详细信息。
    • HTTP 映射(第 8 节)和附加要求(第 9 节)描述了如何使用帧和流来表达 HTTP 语义。
    HTTP连接

    HTTP/2 over TLS 使用“h2”协议标识符。
    一旦 TLS 协商完成,客户端和服务器都必须发送一个连接前言


    参考资料:
    http2:

    • https://www.rfc-editor.org/rfc/rfc7540.html(已过时)
    • https://www.rfc-editor.org/rfc/rfc9113.html(2022)
    • 协议抓包:https://blog.csdn.net/gaoliang1719/article/details/106030832
    • HPack:https://blog.csdn.net/weixin_38616298/article/details/108421371
    • HTTP3/队首阻塞:https://blog.csdn.net/ccw_922/article/details/124501101
    • HTTP2:https://blog.csdn.net/qq_40276626/article/details/120412462
  • 相关阅读:
    Spring注解 bean基础
    more than one ‘primary‘ bean found among candidates: xxxTransactionManager
    LLM Tech Map 大模型技术图谱
    shell编程(六):函数
    MySQL必知必会-笔记-Part6
    唐岩重新出山任挚文CEO:仍难挡陌陌颓势 营收持续下滑
    2021年09月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
    电脑硬盘恢复技巧
    微信小程序广告banner、滚动屏怎么做?
    Pandas数据处理分析系列4-数据如何清洗
  • 原文地址:https://blog.csdn.net/riddle1981/article/details/126961148