热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Sdk加载壅塞页面衬着题目的总结

由于一直没有复原壅塞时的状况,没法截图。在一般状况下,是没法区分是不是运用defer的区分的。后续看一下是不是能模仿场景。写demo模仿场景,由于当时的场景是外链是js加载壅塞,而

由于一直没有复原壅塞时的状况,没法截图。在一般状况下,是没法区分是不是运用defer的区分的。后续看一下是不是能模仿场景。
写demo模仿场景,由于当时的场景是外链是js加载壅塞,而不是js实行壅塞,临时没有有用模仿。
然则能够肯定的是,运用defer或async能够有用处理,外链js壅塞内部js实行的题目。

Demo概况:
《Sdk加载壅塞页面衬着题目的总结》
ndex1内里是一个耗时一秒钟的操纵

《Sdk加载壅塞页面衬着题目的总结》
效果

《Sdk加载壅塞页面衬着题目的总结》
如将index1.js加上defer后

《Sdk加载壅塞页面衬着题目的总结》
《Sdk加载壅塞页面衬着题目的总结》

发明,耗时的index1,没有壅塞后续的index2和内嵌js2实行

假如将index1.js加上async

《Sdk加载壅塞页面衬着题目的总结》
《Sdk加载壅塞页面衬着题目的总结》

可发明,不只没有壅塞后续的index2和内嵌js2实行,DOMContentLoad时刻也提早了

假如index1和index2都async了

《Sdk加载壅塞页面衬着题目的总结》
《Sdk加载壅塞页面衬着题目的总结》

可发明,内嵌的js1和js2,提早,外接index1,和index2递次实行,index1壅塞了index2

假如耗时的index1 async, 后置位index2 defer

《Sdk加载壅塞页面衬着题目的总结》
《Sdk加载壅塞页面衬着题目的总结》

可发明,内嵌的js1和js2,提早, index1不壅塞了index2

假如耗时的index1 defer, 后置位index2 async

《Sdk加载壅塞页面衬着题目的总结》
《Sdk加载壅塞页面衬着题目的总结》

可发明,内嵌的js1和js2,提早, index1壅塞了index2,DOMContentLoad时刻滞后

结论:

1.运用defer, async异步加载,能够使内部的js不被壅塞

2.运用defer属性的标签,永远在DOMContentLoaded事宜之前实行完成。

3.defer能够壅塞async的实行,虽然两个标签都是异步下载的

回到项目中:
一站式是React衬着,React的js剧本实行一定是在DOMContentLoaded时刻之前

我发明给机器人sdk加上defer以后 first paint 仍然是在DOMContentLoad以后,那我猜测,defer并不能使DOMContentLoad提早,会不会不能处理这个题目

《Sdk加载壅塞页面衬着题目的总结》

然后我找了个外网React CDN的script标签来模仿这个超时加载sdk的场景,发明首屏时刻大大延伸

《Sdk加载壅塞页面衬着题目的总结》
《Sdk加载壅塞页面衬着题目的总结》

延伸时刻基本即是js加载时刻,2.63s, 而且初次衬着在DOMContentLoad之前,首屏时刻没有截全,然则看看下面这个图你就邃晓了,肯定在2S以上,肯定是未加载的js影响了页面的衬着

《Sdk加载壅塞页面衬着题目的总结》

然后给其加上defer属性,基本影响就小很多了,😓

《Sdk加载壅塞页面衬着题目的总结》
《Sdk加载壅塞页面衬着题目的总结》

js加载时刻因收集缘由削减1.2s,然则DOMContentLoad少了足足2.9s, 且初次衬着仍然在DOMContentLoad之前,以后1.2s摆布

处理方案:
机器人SDK(运用defer处理题目)

附:
魔镜SDK(运用async加载,曾由于没有用async也壅塞过一次)

分享几个基本观点

defer和async的区分

defer和async能够处理script壅塞页面衬着

Defer -> 假如script标签设置了该属性,则浏览器会异步的下载该文件而且不会影响到后续DOM的衬着

defer剧本会在文档衬着终了后,DOMContentLoaded事宜挪用前实行

《Sdk加载壅塞页面衬着题目的总结》

async的设置,会使得script剧本异步的加载并在许可的状况下实行

async的实行,并不会按着script在页面中的递次来实行,而是谁先加载完谁实行

状况1: HTML 还没有被剖析完的时刻,async剧本已加载完了,那末 HTML 住手剖析,去实行剧本,剧本实行终了后触发DOMContentLoaded事宜。如下图所示:Sdk加载壅塞页面
《Sdk加载壅塞页面衬着题目的总结》

状况2: HTML 剖析完了以后,async剧本才加载完,然后再实行剧本,那末在HTML剖析终了、async剧本还没加载完的时刻就触发DOMContentLoaded事宜。如下图所示:Sdk加载阻

《Sdk加载壅塞页面衬着题目的总结》

html的版本 html4.0中定义了defer;html5.0中定义了async
浏览器

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 1.0 1.0 (1.7 or earlier) (Supported) (Supported) (Supported)
asyncattribute (Supported) 3.6 (1.9.2) 10 – (Supported)
deferattribute (Supported) 3.5 (1.9.1) 4 – (Supported)

DOMContentLoaded与load的区分

DOMContentLoaded:当初始的 HTML 文档被完整加载和剖析完成以后,DOMContentLoaded 事宜被触发,而无需守候样式表、图象和子框架的完成加载

load: 当一个资本及其依靠资本已完成加载时,将触发load事宜

参考文章:

再谈DOMContentLoaded与衬着壅塞—剖析html页面事宜与资本加载

https://www.zhoulujun.cn/html…

浅谈script标签中的async和defer
https://www.cnblogs.com/jiasm…

高性能Javascript–剧本的无壅塞加载战略
http://www.cnblogs.com/coco1s…


推荐阅读
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • JavaScript和Python是用于构建各种应用程序的两种有影响力的编程语言。尽管JavaScript多年来一直是占主导地位的编程语言,但Python的迅猛发展有 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 随着前端技术的发展,越来越多的开发者开始使用react、vue等web框架,但很少有人深入理解这些框架的源码。然而,这些框架底层都是由原生的javascript构建而成。对于初学前端的人来说,可能会认为javascript很容易上手,但实际上只是因为它被高度封装了。与能够使用封装类的人相比,能够理解框架原理的人则处于另一个层面。本文将深入剖析jquery源码,探寻框架底层的原理,帮助读者更好地理解web框架的运行机制。 ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • 我正在尝试使用scrapycrallsingle运行完美运行的scrapy蜘蛛,但我无法在python脚本中运行它.主要问题是从不执行SingleBlogSpider.parse方 ... [详细]
  • 马尔可夫决策过程Markov Decision Process,MDPKintoki
    Originalurl:http:www.tuicool.comarticlesb6BjAva1.马尔可夫模型的几类子模型我想大家一定听说过马尔科夫链(MarkovChain)& ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 认识Vue关于Vue的描述有不少,不外乎都会拿来与Angular和React对比,同样头顶MVVM双向数据驱动设计模式光环的Angular自然被对比的最多,但到目前为止,Angul ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
author-avatar
阴森森林蛀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有