首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

探究网页资源究竟是如何阻塞浏览器加载的

这是布兰的第 15 篇原创 一个页面允许加载的外部资源有很多,常见的有脚本、样式、字体、图片和视频等,对于这些外部资源究竟是如何影响整个页面的加载和渲染的呢?今天我们来一探究竟。...h1 标签,继续加载 3 到 4 秒后(此时正在加载 bootstrap.css),页面出现 我是 h1 标签 字样,此时页面已经渲染完成。...从而得出结论: bootstrap.css 还没加载完成,而 DOM 中就已经出现 h1 标签,说明 CSS 不会阻塞 DOM 的解析; 页面直到 bootstrap.css 加载完成才出现 h1 里的文案...为什么是这个结论呢?试想一下页面渲染的流程就知道了。...JS 加载阻塞 CSS 会阻塞 DOM 的渲染和阻塞定义在其之后的 JS 的执行,那 JS 加载会对渲染过程造成什么影响呢? <!

2.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    css加载会造成阻塞吗

    可能大家都知道,js执行会阻塞DOM树的解析和渲染,那么css加载会阻塞DOM树的解析和渲染吗?接下来,我就来对css加载对DOM树的解析和渲染的影响做一个测试。...由上图我们可以看到,当css还没加载完成的时候,h1并没有显示,但是此时控制台输出如下 可以得知,此时DOM树至少已经解析完成到了h1那里,而此时css还没加载完成,也就说明,css并不会阻塞DOM...css加载会阻塞DOM树渲染? 由上图,我们也可以看到,当css还没加载出来的时候,页面显示白屏,直到css加载完成之后,红色字体才显示出来,也就是说,下面的内容虽然解析了,但是并没有被渲染出来。...从流程我们可以看出来 DOM解析和CSS解析是两个并行的进程,所以这也解释了为什么CSS加载不会阻塞DOM的解析。...,css还未加载完,就已经触发了DOMContentLoaded事件了。

    4.4K60

    css加载会造成阻塞吗

    可能大家都知道,js执行会阻塞DOM树的解析和渲染,那么css加载会阻塞DOM树的解析和渲染吗?接下来,我就来对css加载对DOM树的解析和渲染的影响做一个测试。...由上图我们可以看到,当css还没加载完成的时候,h1并没有显示,但是此时控制台输出如下 ?...可以得知,此时DOM树至少已经解析完成到了h1那里,而此时css还没加载完成,也就说明,css并不会阻塞DOM树的解析。 css加载会阻塞DOM树渲染?...由上图,我们也可以看到,当css还没加载出来的时候,页面显示白屏,直到css加载完成之后,红色字体才显示出来,也就是说,下面的内容虽然解析了,但是并没有被渲染出来。...从流程我们可以看出来 DOM解析和CSS解析是两个并行的进程,所以这也解释了为什么CSS加载不会阻塞DOM的解析。

    1.5K20

    前端:你可能不知道的骨架屏方案设计

    从测试数据反映,有些页面加载完成率(专业的可以理解为首屏加载率)偏低,但活动页面上一级入口点击率正常。...不知道大家有没有使用过骨架屏,下面我们就是用类似骨架屏的能力去解决这个问题。 〇 “骨架图”实现 骨架屏基本就是详细页面元素未展现时,把DOM结构通过线条勾勒出来。...体验上的考虑 我们发现功能是实现了,但对于开发体验不太友好。 分析步骤 现在开发同学需要开发一个骨架屏,需要几个步骤。 vue中设定预加载图片的placeholder,这样才能关联上预加载好的图片。...image.png 从上面图片看,确实是图片的优先级被提升到了High,但还是在js文件后面加载了,这是为什么?...这是为什么啊??? image.png 再回忆我之前这节前埋的伏笔,2个CSS+4个JS,已经占满了一个域名6个请求的限制,图片就滞后了。 那为什么图片抢不过CSS、JS呢?再回头看看这张图。

    2.1K20

    你不可能知道的骨架屏玩法!

    从测试数据反映,有些页面加载完成率(专业的可以理解为首屏加载率)偏低,但活动页面上一级入口点击率正常。...不知道大家有没有使用过骨架屏,下面我们就是用类似骨架屏的能力去解决这个问题。 〇 “骨架图”实现 骨架屏基本就是详细页面元素未展现时,把DOM结构通过线条勾勒出来。...因为我们一个活动是固定主图和样式的,并没有千人千面。 所以我们可以在运营管理平台配置的时候就确认哪些图片可以被预先加载。...从上面图片看,确实是图片的优先级被提升到了High,但还是在js文件后面加载了,这是为什么?...这是为什么啊??? 再回忆我之前这节前埋的伏笔,2个CSS+4个JS,已经占满了一个域名6个请求的限制,图片就滞后了。 那为什么图片抢不过CSS、JS呢?再回头看看这张图。

    1.9K20

    一次useEffect引发浏览器执行机制的思考

    差不多页面渲染出来就是这个样子: 输出结果 这个是正常的输出结果: 当时当我们尝试多刷新几次页面来看看打印结果: 也许你会奇怪是不是我代码写的有问题,这里先卖个小关子两次不同的打印结果,产生的原因和业务代码没有任何关系...之后引入了bootstrap样式库。 注意:我们需要将浏览器中"网络"限制为SLOW 3G进行测试。 通过上边的表现,我们可以看到当页面加载中。...css加载会阻塞Dom Tree的渲染,只有当css加载完成后页面才会渲染出蓝色的大大的标题。 css加载对于js的影响 那么css加载对于js的是否有影响呢?...我们先来关注下HTML和Css的加载其实他们是并行加载,这也就印证了我们上边提到的css加载并不会影响Dom Tree的构建。...看到这里我相信你已经能大概猜出来结果,没错!他和我们的业务代码没有一毛钱关系,完全取决于css文件的加载!!

    96210

    【前端面试专栏】script脚本以及link标签对DOM的影响

    初始加载页面的时候,控制台打印出来两条数据,但是页面并没渲染,此时CSS资源正在加载中一直加载,直到加载失败,页面才渲染完成,说明,link...标签加载CSS资源时阻止了页面渲染 2、link标签会阻塞JS执行 JS运行时,有可能会请求样式信息,如果此时还没有加载和解析样式,js就有可能会得到错误的回复,产生很多问题。... 页面初始加载时,CSS资源一直在加载,body中的script一直没有加载出来,可以看到控制台并没有打印任何东西。...所以说link标签会阻止JS执行 当CSS资源加载完成或者加载失败后就执行了script脚本,可以看到控制台打印出来js执行完毕,且此时页面已经渲染出来 3、link和@import的区别 用法: 影响浏览器的并行下载,使得页面在加载时增加额外的延迟,增添了额外的往返耗时,而且多个@import可能会导致下载顺序紊乱。

    18610

    <script> 脚本以及 <link> 标签对 DOM 解析渲染的影响

    初始加载页面的时候,控制台打印出来两条数据,但是页面并没渲染,此时CSS资源正在加载中之后CSS资源一直加载,直到加载失败,页面才渲染完成,说明,link...标签加载CSS资源时阻止了页面渲染2、link标签会阻塞JS执行JS运行时,有可能会请求样式信息,如果此时还没有加载和解析样式,js就有可能会得到错误的回复,产生很多问题。...页面初始加载时,CSS资源一直在加载,body中的script一直没有加载出来,可以看到控制台并没有打印任何东西。...所以说link标签会阻止JS执行当CSS资源加载完成或者加载失败后就执行了script脚本,可以看到控制台打印出来js执行完毕,且此时页面已经渲染出来3、link和@import的区别用法:影响浏览器的并行下载,使得页面在加载时增加额外的延迟,增添了额外的往返耗时,而且多个@import可能会导致下载顺序紊乱。

    60611

    OpenUI5 (SAPUI5) js框架简单介绍

    框架的搭建 OpenUI5的搭建和其他的js框架类似,没有太大的区别,具体可以参考官方的Demo。...在此要注意的是,OpenUI5的设计模式是MV*,而且OpenUI5已经自己做好了MV*了,所以十分方便。...id="sap-ui-bootstrap"---指定了页面ui的类型 src="resources/sap-ui-core.js"---指定了核心框架包的位置 data-sap-ui-theme="sap_bluecrystal..." ---页面主题样式定义 data-sap-ui-libs="sap.ui.commons"---指定核心包下的内容块,为什么这样说呢,因为sap倡导的是一套代码支持所有平台,所有他的包也被分为了PC...这是对需要的组件包的支持而指定的,这里一般引入基本核心包就够了,但是如果需要其他的OpenUI5包支持,则用逗号隔开一一添加,在添加过程中最好按照包的层级添加(虽然在开发中没有太大的影响)。

    70540

    【SAP UI5系列】SAP OpenUI5 (SAPUI5) js框架简单介绍

    框架的搭建       OpenUI5的搭建和其他的js框架类似,没有太大的区别,具体可以参考官方的Demo。...在此要注意的是,OpenUI5的设计模式是MV*,而且OpenUI5已经自己做好了MV*了,所以十分方便。...id="sap-ui-bootstrap"---指定了页面ui的类型 src="resources/sap-ui-core.js"---指定了核心框架包的位置 data-sap-ui-theme="sap_bluecrystal..." ---页面主题样式定义 data-sap-ui-libs="sap.ui.commons"---指定核心包下的内容块,为什么这样说呢,因为sap倡导的是一套代码支持所有平台,所有他的包也被分为了PC...这是对需要的组件包的支持而指定的,这里一般引入基本核心包就够了,但是如果需要其他的OpenUI5包支持,则用逗号隔开一一添加,在添加过程中最好按照包的层级添加(虽然在开发中没有太大的影响)。

    1.2K00

    感谢前任程序员赏饭吃!

    而且这台电脑前任虽然用过,但是很新,很多开发必备的工具都没有,一问才知道他嫌弃这台电脑配置不行,我一脸懵逼,16G+I5 九代+固态,不算很好但对开发来讲也不错了吧,后面项目实施一脸无奈的告诉我,他喜欢用隔壁办公桌上那台...明明可以把之前的代码优化下非要用更饶的逻辑去圆已经绕到卷毛的代码!!!...一个业务再复杂,离不开一个主干逻辑(也可能是多个)和 N 个子逻辑,你不能把臃肿的子逻辑代码放在同一个处理代码内部,这样太影响可读性,影响可读性的后果就是提高了维护成本。...前端列表分页 前端用的 H-ui,先不评判这个框架好不好,但用户反应最多的就是:卡,卡,卡 我一开始是以为是接口问题,虽然发现接口确实很慢,但数据查询完毕返回后页面上还是没有加载出来,后面才发现,一次接收的数据足足有...而且他前端渲染表格的方式是这样的,手动拼接字符串然后填充到网页里 在了解 H-UI 是基于 bootstrap 开发之后,我果断用了 bootstrap-table 去重构前端渲染方式,至少页面这个时候可以渲染出来的

    39210

    基于vue.js的渐进式组件尝试

    比如说,我就把一堆标签用一个新的标签替代,然后解析页面的执行js脚本还原回来,这是最基本的一步。 在我有限的认知里,vue.js就是最简单的满足需求的选择。为什么不用react?..."fa fa-calendar">\ \ \ \ ' }) 先假设页面上已经加载了需要的...然后,到这里,仍然是基于页面上已经手动加载了依赖的css和js,这个组件其实还不算完整。事实上,我们还希望能够只要引用这个组件,依赖也要自然地满足。...而这个,无非就是在合适的时候把依赖的css和js动态加载进来。这个“合适的时候”我仍然选择的是"mounted"阶段,为什么?感觉自然而然呀。...可是,动态加载CSS和JS的难点其实是,如何判断已经资源加载完成?兼容性仍然是个问题。

    1.8K100

    基于vue.js的渐进式组件尝试

    比如说,我就把一堆标签用一个新的标签替代,然后解析页面的执行js脚本还原回来,这是最基本的一步。 在我有限的认知里,vue.js就是最简单的满足需求的选择。为什么不用react?..."fa fa-calendar">\ \ \ \ ' }) 先假设页面上已经加载了需要的...然后,到这里,仍然是基于页面上已经手动加载了依赖的css和js,这个组件其实还不算完整。事实上,我们还希望能够只要引用这个组件,依赖也要自然地满足。...而这个,无非就是在合适的时候把依赖的css和js动态加载进来。这个“合适的时候”我仍然选择的是"mounted"阶段,为什么?感觉自然而然呀。...可是,动态加载CSS和JS的难点其实是,如何判断已经资源加载完成?兼容性仍然是个问题。

    1.4K10

    彻底解决 qiankun 找不到入口的问题

    为什么要找生命周期 首先,我们要知道为什么 qiankun 加载微应用时要找生命周期钩子。 早在 qiankun 出来前,已经有一个微前端框架 single-spa 了。...然而,single-spa 只提供了生命周期的调度,并没有解决这一系列问题。 既然前人解决不了,后人则可以基于原有框架继续优化,这就是 qiankun。...它的原理如图所示: 可以看到 qiankun 自己实现了一套通过 HTML 地址加载微应用的机制,但对于 “要在什么时候执行 JS” 依然用了 single-spa 的生命周期调度能力。...config.output.globalObject = 'window'; return config; }, ... }; 文档里说这是一个兜底找入口的逻辑: 但文档没有说这里的细节...这也是为什么兜底找入口操作需要微应用配置 Webpack,同时主应用指定的微应用名要和 library 名要一样。

    2.3K10

    基于 Express 应用框架的技术方案选型浅谈

    功能是 API 浏览器,该功能能让开发者用非常直观的方式查看所有的 API 接口,如果你需要创建 API 服务的话,它无疑是个很好的选择 本文主要讲解 Express 应用框架,虽然它提供的能力非常简单,但对于一些工具平台的开发完全可以胜任...但是如果应用较大,首次请求静态资源和进行页面动态渲染的过程中会产生以下问题: 首屏加载慢,产生白屏效果 不利于 SEO 为了解决上述客户端的渲染问题,需要实现 React 服务端渲染。...此项目为了支持服务端 TypeScript 语法,使用 Backpack 对服务端代码进行构建(不影响同构部分代码的构建,同构代码在 Nuxt 里是通过读取文件的方式获取)。...在客户端使用 ts-node 启动服务,通过识别 DEV_TYPE 环境变量加载Nuxt的 Builder,实现 Web 前端的热加载功能。...如果对于页面布局以及样式设计不熟悉,可以考虑选用 Bootstrap 前端框架。 不需要深入了解 ES6 / ES7 / JSX 等语法,因此不需要学习和使用 Webpack 配置。

    7K30

    Tomcat 的类加载机制

    时需要指定自己的 parent 是谁 (2)先检查类是否已经被加载过,如果类已经被加载了,直接返回 (3)若没有加载则调用父加载器 parent 的 loadClass() 方法进行加载 (4)若父加载器为空则默认使用启动类加载器...有没有加载过这个类 (2)如果 Tomcat 没有加载过这个类,则从系统类加载器的 cache 缓存中查找是否加载过 (3)如果没有,则使用 ExtClassLoader 类加载器类加载,重点来了,Tomcat...不过 ExtClassLoader 依然遵循双亲委派,它会使用 Bootstrap ClassLoader 来对类进行加载,保证了 Jre 里面的核心类不会被重复加载。...WebAppClassLoader → ExtClassLoader → Bootstrap ClassLoader,这个加载链,就保证了 Object 不会被重复加载。...(6)都没有加载成功的话,抛出异常。

    85610
    领券