浏览器加载和渲染html的顺序

文章是从网上看到的,觉很好,记录下来,以供学习,原文点击

1.浏览器加载和渲染html的顺序

1、IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。
2、在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相关联的元素都已经下载完)
3、如果遇到语义解释性的标签嵌入文件(JS脚本,CSS样式),那么此时IE的下载过程会启用单独连接进行下载。
4、并且在下载后进行解析,解析过程中,停止页面所有往下元素的下载。阻塞加载
5、样式表在下载完成后,将和以前下载的所有样式表一起进行解析,解析完成后,将对此前所有元素(含以前已经渲染的)重新进行渲染。
6、JS、CSS中如有重定义,后定义函数将覆盖前定义函数

2. JS的加载

2.1: 不能并行下载和解析(阻塞下载)

2.2:当引用了JS的时候,浏览器发送1个js request就会一直等待该request的返回。因为浏览器需要1个稳定的DOM树结构,而JS中很有可能有代码直接改变了DOM树结构,比如使用 document.write 或 appendChild,甚至是直接使用的location.href进行跳转,浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以 就会阻塞其他的下载和呈现.

3.如何加快HTML页面加载速度

1,页面减肥

页面的肥瘦是影响加载速度最重要的因素
删除不必要的空格、注释
将inline的script和css移到外部文件
可以使用HTML Tidy来给HTML减肥,还可以使用一些压缩工具来给JavaScript减肥

2,减少文件数量

减少页面上引用的文件数量可以减少HTTP连接数
许多JavaScript、CSS文件可以合并最好合并,人家财帮子都把自己的JavaScript. functions和Prototype.js合并到一个base.js文件里去了

3,减少域名查询

DNS查询和解析域名也是消耗时间的,所以要减少对外部JavaScript、CSS、图片等资源的引用,不同域名的使用越少越好

4,缓存重用数据

使用缓存吧
5,优化页面元素加载顺序
首先加载页面最初显示的内容和与之相关的JavaScript和CSS
然后加载DHTML相关的东西
像什么不是最初显示相关的图片、flash、视频等很肥的资源就最后加载

6,减少inline JavaScript的数量

浏览器parser会假设inline JavaScript会改变页面结构,所以使用inline JavaScript开销较大
不要使用document.write()这种输出内容的方法,使用现代W3C DOM方法来为现代浏览器处理页面内容
7,使用现代CSS和合法的标签
使用现代CSS来减少标签和图像,例如使用现代CSS+文字完全可以替代一些只有文字的图片
使用合法的标签避免浏览器解析HTML时做“error correction”等操作,还可以被HTML Tidy来给HTML减肥

8,Chunk your content

不要使用嵌套tables

<table>
  <table>
    <table>
      ..
    <table>
  <table>
<table>

而使用非嵌套tables或者divs

<table>...</table>
<table>...</table>
<table>...</table>

将基于大块嵌套的tables的layout分解成小tables,这样显示时不用加载整个页面(或大table)的内容

9,指定图像和tables的大小

如果浏览器可以立即决定图像或tables的大小,那么它就可以马上显示页面而不要重新做一些布局安排的工作
这不仅加快了页面的显示,也预防了页面完成加载后布局的一些不当的改变
image使用height和width
table使用table-layout: fixed并使用col和colgroup标签指定columns的width

10,根据用户浏览器明智的选择策略
IE、Firefox、Safari等等等等

11,页面结构的例子

  <HTML>
      <header> 
        <link>
        //页面外观所需的CSS文件。尽量减少性能文件的数量,同时保持无关的CSS在单独的文件中进行维护。
        </link
        <script>
        //JavaScript。在页面加载过程中所需要的功能的文件,但没有任何DHTML,只能运行在页面加载。 
        //在保持无关JavaScript的情况下最小化性能文件的数量。在单独的文件中进行维护。
        </script>
      </header>
    <body> 
    //用户可见的页面内容的小块(tables/ div),可以无需等待下载完整的页面显示。
        <script>
        //将用于执行的任何脚本。DHTML。DHTML脚本。通常只能在页面完全加载后运行,所有必需的对象都已初始化。不需要在页面内容之前加载这些脚本。这只会减慢页面加载的初始外观。 
       // 在保持无关JavaScript的情况下最小化性能文件的数量。在单独的文件中进行维护。
       //如果用于翻转效果的任何图像,您应该在页面内容下载后将其预加载到这里。
        </script>
    </body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我只转载觉得可以使用的. 1.浏览器加载和渲染html的顺序 1、IE下载的顺序是从上到下,渲染的顺序也是从上到下...
    光小月阅读 826评论 0 1
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • 简介浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工 作原理,我们将看到,从你在地址栏输入google.c...
    听风阁阅读 3,316评论 0 7
  • 11月13日,陈女士和几个朋友带小孩到IFS周边玩耍。靠近一家看似新开的炸鸡店,店名叫‘叫了个鸡’,宣传语为 ‘一...
    哈尔滨阳光运脉艺术馆阅读 639评论 8 17
  • 从五一开始看追风筝的人,虽然感觉看的不是很仔细,但是书讲了个什么我还是知道的。我也是从豆瓣上看见这本书评分比较高,...
    eviloo7阅读 491评论 0 0