码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 前端性能优化:dns-prefetch和preload预加载资源


    前端页面加载的时候我们有时会用到一些非模块化的库都是用cdn引入的,如果体积很大的话会阻塞页面的加载,并且这个库可能只在特定页面调用,这样体验很不好

    这里可以用dns-prefetch按需加载解决.

    什么是dns-prefetch?

    link指定rel=dns-prefetch后浏览器会在空闲时间预加载好资源但是不会执行,等真正请求的时候才执行,此时已经资源已经加载好了直接执行.

    和rel=prefetch不一样的是,前者会提前解析好dns,等到请求资源时就会起到提速的作用

    京东示例:

    如何使用? 

    一般特定的sdk链接会配合一个函数进行按需加载,只需要在调用的时候加载库,使用方法:

    第一步:引入link标签

    为其动态加载资源增加链接类型为 preload 的 link 标签,其 as 的值可根据后缀自动判断,也可显式声明

    <link href="/xxx.js"  rel="prefetch" as="script" />

    第二步: 封装加载script的函数 

    1. function loadScript() {
    2. let flag = false
    3. return () => {
    4. if (!flag) {
    5. const s = document.createElment('script')
    6. s.src="/xxx.js"
    7. }
    8. }
    9. }()

    在调用库之前调用loadScript就可以按需加载了,link标签告诉浏览器提前加载好资源,我们script加载的时候就直接执行了

    这样如果这个库很大的话就不会阻塞页面执行了

    借助webpack进行管理

    第三方插件

    webpack官方插件

    preload是什么?

    preload也是浏览器的预加载政策,和prefetch一样,但是preload会占用请求数,优先级比较高,chrome http1.1 并发请求数限制了6个,因此如果页面需要的请求就已经有6个了,preload的资源比较大并且刚好比那6个页面需要的请求先加载,那么就会卡很久,导致页面需要的6个请求一直在waiting中,页面展示不出来

    所以preload一般要慎用,也用的很少,prefetch在浏览器的网络栈中优先级比较低,它会在浏览器空闲的时候去加载,不会阻塞页面需要的请求加载执行,所以prefetch更友好.

  • 相关阅读:
    (尚硅谷)JavaWeb新版教程08-QQZone项目的实现
    讯飞翻译机抢镜背后,跨语种沟通迈入全新时代
    详解synchronize关键字
    酶联试剂抗体抗原 ——博迈伦
    20省市公布元宇宙路线图
    (11)点云数据处理学习——Colored point cloud registration(彩色点注册)
    为什么说FTP越来越不好用了?该如何替代?
    代码随想录二刷day41
    工业自动化控制通信协议Profinet系列-1、了解Profinet协议及收集资料
    java毕业生设计医院门诊分诊系统计算机源码+系统+mysql+调试部署+lw
  • 原文地址:https://blog.csdn.net/Suk__/article/details/127805833
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号