返回顶部
首页 > 资讯 > 精选 >HTML资源是怎么加载的
  • 898
分享到

HTML资源是怎么加载的

2023-06-08 07:06:22 898人浏览 独家记忆
摘要

小编给大家分享一下html资源是怎么加载的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!引入完成了若干个基于WEB的项目, 也了解了从前端的js,CSS,html

小编给大家分享一下html资源是怎么加载的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

引入

完成了若干个基于WEB项目, 也了解了从前端js,CSS,html到后端python/PHP等, 二者如何交互, 最终浏览器如何执行, 这些在心里也已经很明确了. 不过一个问题一直萦绕在心中,那就是:

一个html有若干个外部资源(js,css,flash,image等),这些请求是何时下载的,又是何时执行的?

不清楚,不明白, 所以也就不知道我写的js究竟何时执行的, 也就不知道为什么很多高性能的建议是要将js置于一个 html底端的</body>之前.

如果你也不是很明确,请来和我一起学习吧.

具体分析

首先我们来看一个示例的html页面,如下:

<html>  <head>   <script src="/static/Jquery.js" type="text/javascript"></script>   <script src="/static/abc.js" type="text/javascript">   </script>   <link rel="stylesheets" type="text/css" href="/static/abc.css"></link>   <script>$(document).ready(function(){     $("#img").attr("src", "/static/kkk.png");   });   </script>  </head>  <body>  <div>  <img id="img" src="/static/abc.jpg" style="width:400px;height:300px;"/>  <script src="/static/kkk.js" type="text/javascript"></script>  </body></html>

它有如下几种资源:

  1. 3个外部js文件,1个inline js代码

  2. 1个外部css文件, 1个inline css代码

  3. 1个image文件,及1个js请求的image

总共是6个Http request.

在分析之前,我们来看看firefox对这个html请求的结果, 如下图:

HTML资源是怎么加载的

我们再看看chrome(linux)对这个html的请求结果,如下图(图比较小,可以在新标签中打开):

HTML资源是怎么加载的

我们先分析下,然后再去说明这2种请求结果的不同.

请求分析

首先说明下面这些描述主要是基于自己Google, 咨询朋友和在 SO 和 IRC 上获得, 我并没有阅读相关的spec(当然我很想阅读,如果知道相关spec的朋友请留言谢谢), 不能保证其正确性和准确性,风险自担 :D.

基于相关的调研, 我的理解为, 对于一个URI请求, 浏览器会按照下面的请求和执行顺序进行:

  1. 一个线程对DOM进行下载(也就是html, 而不去管html中的外部资源)

  2. 另外一个线程会开始分析已经下载的DOM, 并开始下载其中的外部资源(如js, css, image等)

  3. 第三个线程(如果有的话)会去下载2正在下载的以外的外部资源

  4. 如果允许更多的连接, 更多的线程会继续下载其它资源

一个请求可以同时有多少个connection(线程), 取决于不同的浏览器, http1.1 标准中规定的是对于同一个server/proxy(也就是hostname) 不超过2个connection, 但是在实际的浏览器实现中, 具体如下:

Firefox 2: 2Firefox 3: 6Opera 9.26: 4Opera 9.5 beta: 4Safari 3.0.4 Mac/windows: 4IE 7: 2IE 8: 6

所以请根据这个实际情况来思考上面的下载顺序.

然后我们看执行顺序(js的执行, css的应用等):

  1. 只要浏览器"看到了"了js代码,它就会执行

  2. 浏览器是从下到下,一行一行地执行

  3. 如果js代码位于一个函数或者对象中,则只有当函数或者对象被调用时才会执行

  4. 而所谓的direct code(不处于函数或者对象中的代码),则会从上到下顺序执行

  5. 当css文件下载完成时, 相应的样式也会应用到DOM上

  6. onload或者jquery的$(document).ready()是在DOM下载完成后执行

在实际的浏览器中, 一般遇到<script>标签会自动block住其它线程的下载, 如firefox, 这也是为什么 在web开发中常常推荐将<script>标签置于</body>之前的原因.

但是并非所有的浏览器都block, 如chrome并不会block住其它的connection. 所以具体的load还需要参考具体的浏览器实现.

建议, 将<script></script>标签置于</body>之前, 这样可以在大多数情况下都得到较好的性能.

对Firefox和chrome的请求分析

我们回过头来看下上面2个图中的请求响应图.

Firefox

有如下特征:

  1. 首先下载html

  2. html下载完成后, 从上到下依次下载外部文件(js, css,img)

  3. js会block其它外部文件的下载

  4. 其它文件会并行下载

chrome

有如下特征:

  1. 首先下载html

  2. 从上到下依次下载外部文件(js,css,img)

  3. 各个资源的下载顺序是并行的

你可能会奇怪如果js可以并行下载,那么可能位于DOM下面的代码会先执行, 首先可以肯定的是 即使下面的js先完成下载,也不会影响到整体的从上到下的执行顺序,浏览器会维护这种顺序的关系, chrome的这种方式也是未来浏览器的一种趋势, 而这也是为什么chrome能够更快的原因之一.

以上是“HTML资源是怎么加载的”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: HTML资源是怎么加载的

本文链接: https://lsjlt.com/news/252464.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • HTML资源是怎么加载的
    小编给大家分享一下HTML资源是怎么加载的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!引入完成了若干个基于WEB的项目, 也了解了从前端的js,css,html...
    99+
    2023-06-08
  • 什么是HTML5资源预加载
    这篇文章主要讲解了“什么是HTML5资源预加载”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是HTML5资源预加载”吧!我曾经介绍过本站上使用的一些速度...
    99+
    2024-04-02
  • AS3资源加载器
    最近鼓捣除了一个加载器。可以分布式地加载文本文件以及SWF文件。本人将它写成了一个Flex库。本着共同进步的目的,我将其分享出来。测试结果 :控制台:测试资源:关于 Flash(SWF)美术资源的介绍:关于测试的核心代码 :package ...
    99+
    2023-01-31
    加载 资源
  • Web中怎么加载图片资源
    Web中怎么加载图片资源,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。浏览器的工作流程要研究图片资源的加载和渲染,我们先要了解...
    99+
    2024-04-02
  • java怎么加载jar包内资源文件
    Java加载jar包内的资源文件可以通过以下两种方式实现: 使用Class.getResource()方法: URL url =...
    99+
    2023-10-30
    java jar
  • 0xA03 Android 10 源码分析:APK 加载流程之资源加载
    引言 这是 Android 10 源码分析系列的第 3 篇 分支:android-10.0.0_r14 全文阅读大概 15 分钟 首发于掘金:...
    99+
    2022-06-06
    程之 apk 源码 Android
  • 聊聊springboot静态资源加载的规则
    目录静态资源映射规则1.webjars2.springboot内置默认访问路径3.首页处理4.网站图标我们经常会使用springboot创建web应用,在springboot中金静态...
    99+
    2024-04-02
  • 教你怎么下载GitHub上的资源
    在如今的软件开发领域中,GitHub已经成为了不可或缺的工具。它是一个世界上最大的开源社区,同时也是最便捷的版本控制工具之一。GitHub上的资源包括程序代码、文档、图片等等,这些资源往往是开放、免费的,并可以在版本控制下共享和协作。然而,...
    99+
    2023-10-22
  • Android动态加载资源实例解析
      前不久跑去折腾高德 SDK 中的 HUD 功能,相信用过该功能的用户都知道 HUD 界面上的导航转向图标是动态变化的。从高德官方导航 javascript:;" onC...
    99+
    2022-06-06
    android动态加载 Android
  • Android插件化之资源动态加载
    Android插件化之资源动态加载 一.概述 Android插件化的一个重要问题就是插件资源访问问题,先列出会面对的问题 1.如何加载插件资源 2.如何处理插件资源与宿主...
    99+
    2022-06-06
    动态 Android
  • 如何使用PreloadJS加载图片资源
    这篇文章主要介绍如何使用PreloadJS加载图片资源,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一. 使用createjs里的LoadQueue函数实现异步加载图片,监听加载进度...
    99+
    2024-04-02
  • 电脑vue加载静态资源报错
    在使用Vue进行开发时,我们通常都会使用一些静态资源,例如图片、CSS文件、JavaScript文件等等。加载这些静态资源可以帮助我们更好地构建页面、增强用户体验。但有时候,我们会遇到电脑Vue加载静态资源报错的情况,这给开发者带来了一定的...
    99+
    2023-05-25
  • springBoot如何动态加载资源文件
    目录springBoot动态加载资源文件构造DynamicLoadPropertySource添加到EnviromentspringBoot静态资源动态加载举例说明springBoo...
    99+
    2024-04-02
  • PHP自动加载学习资源推荐
    PHP自动加载是将类、接口和特性映射到文件路径的机制。这允许您在类名或接口名之前使用use而不必手动包含文件。这使得您的代码更加简洁和易于维护。 如果你想学习PHP自动加载,这里有一些资源可以帮助你入门: 官方文档:PHP官方文档提供...
    99+
    2024-02-08
    PHP 自动加载 学习资源 入门 进阶
  • CSS/JS网页资源阻塞浏览器加载的原理是什么
    本篇内容介绍了“CSS/JS网页资源阻塞浏览器加载的原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正文一个页面允许加载的外部资源有...
    99+
    2023-07-05
  • C#加载嵌入到资源的非托管dll
    如何加载非托管Dll 我们总会遇到需要加载非Win32的非托管dll,这里推荐一种方式就是将那些非win32的非托管dll嵌入资源的方式,在入口解压并且加载的方式,我先来看看如何实现...
    99+
    2024-04-02
  • Android项目中怎么样实现加载assets中的资源文件
    这期内容当中小编将会给大家带来有关Android项目中怎么样实现加载assets中的资源文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Android 加载assets资源在android中,如何加载a...
    99+
    2023-05-31
    android roi assets
  • Android 加载assets中的资源文件实例代码
    Android 加载assets资源 在android中,如何加载assets目录下的文件夹呢?方法很简单,使用 AssetManager, 即 AssetManager...
    99+
    2022-06-06
    源文件 Android
  • HTML5中资源预加载Link prefetch的示例分析
    小编给大家分享一下HTML5中资源预加载Link prefetch的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!不管是...
    99+
    2024-04-02
  • springboot中的静态资源加载顺序优先级
    目录springboot静态资源加载顺序优先级看springboot源码里面springboot静态资源加载规则一、静态资源映射规则1.webjars2.springboot内置默认...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作