• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >心得技巧 > 让你了解HTML及资源是如何加载的

让你了解HTML及资源是如何加载的

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含HTML,资源等相关知识,佚名 希望在学习及工作中可以帮助到您

本博客所有内容采用 Creative Commons Licenses 许可使用. 引用本内容时,请保留 朱涛, 出处 ,并且 非商业 .

引入

完成了若干个基于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请求的结果, 如下图:

/do/uploads/allimg/091203/2217550.png

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

/do/uploads/allimg/091203/2217551.png

我们先分析下,然后再去说明这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: 2
Firefox 3: 6
Opera 9.26: 4
Opera 9.5 beta: 4
Safari 3.0.4 Mac/Windows: 4
IE 7: 2
IE 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

您可能想查找下面的文章:

  • html编写edm时注意事项小结(一般发邮件需要注意的地方)
  • 浅谈.html,.htm,.shtml,.shtm的区别与联系
  • html、css基础注意点(前端必看篇)
  • 关于HTML面试题全部汇总
  • 符合w3c标准的html标准需要注意的地方详解
  • 深入理解HTML5在移动开发方面的发展现状
  • 浅谈HTML5与HTML4的10个关键区别
  • 分享15个最佳的HTML/CSS设计和开发框架
  • 自己在实践中遇到的一些前台基础(html、css)
  • 用ps两分钟做个xhtml+css的网站首页

相关文章

  • 2017-08-0630款免费高质量的英文丝带字体
  • 2018-08-23进阶高级设计师!如何从零开始做出用户体验地图?
  • 2018-08-23超实用!3分钟带你掌握11个最常用的交互控件
  • 2018-08-23超全面的导航设计基础知识总结(一)
  • 2018-08-23Facebook 产品设计师:如何提高自己的设计审美?
  • 2018-08-23新姿势!用自然灵活的波纹曲线来柔化你的设计
  • 2018-08-23实例演示!“设计规范”没有你想象的那么重要(附常用设计规范)
  • 2018-08-23超详细的2018年设计师进阶升级指南
  • 2018-08-23「这个控件叫什么」系列之虚拟键盘/软键盘/Soft Keyboard
  • 2018-08-23通过这5个AR APP,帮你一窥现实增强技术的应用

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 为什么我用数据驱动设计,结果却不尽人意?
    • 甲方骗我喝了杯奶茶,喝完告诉我这就是设计费?
    • 轻松看懂规范!详解组件控件结构体系之单元控件类
    • 就算你不是专业文案,用好这些技巧也能写出1000条好文案!
    • 极简设计时代怎么用分隔线?看完这个分析你就会了!
    • 学会这4个心理学技巧,让好的设计体验更持久!
    • 网页flash动画不显示的解决方法
    • 听高手分析!谷歌设计师谈VR设计的现状、挑战与前景
    • 沿着这7个思路,你可以正确的使用动效取悦用户
    • 窗口中的各种距离/滚动距离的精确计算汇总

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有