详情参考:浏览器的加载与页面性能优化

例子:

一:DNS:在header中添加 <link rel="dns-prefetch" href="//HOSTNAME.com"> 帮助浏览器更好地进行DNS的预解析。

淘宝首页: 预先对页面中用到的所有域名进行dns与解析设置。

二:link prefetch:

由于Web页面加载是同步模型,这意味着浏览器在执行js操作时需要将后续html的加载和解析暂停,因为js中有可能会调用 document.write来改变dom节点,很多浏览器除了html之外还会将css的加载暂停,因为js可能会获取dom节点的样式信息,这个暂停 会导致页面展现速度变慢,为了应对这个问题,Mozilla等浏览器会在执行js的同时简单解析后面的html,提取出链接地址提前下载,注意这里仅是先 下载内容,并不会开始解析和执行

这一行为还可以通过在页面中加入以下标签来提示浏览器

<link rel="prefetch" href="http://">

但这种写法目前并没有成为正式的标准,也只有Mozilla真正实现了该功能,可以看看Link prefetching FAQ

WebKit也在尝试该功能,具体实现是在HTMLLinkElement的process成员函数中,它会调用ResourceHandle::prepareForURL()函数,目前从实现看它是仅仅用做DNS预解析的,和Mozilla对这个属性的处理不一致

对于不在当前页面中的链接,如果需要预下载后续内容可以用js来实现,请参考这篇文章Preload CSS/JavaScript without execution

预下载后续内容还能做很多细致的优化,如在Velocity China
2010中,来自腾讯的黄希彤介绍了腾讯产品中使用的交叉预下载方案,利用空闲时间段的流量来预加载,这样即提升了用户访问后续页面的速度,又不会影响到高峰期的流量,值得借鉴

三:http:

编码识别:

页面的编码可以在http header或meta标签中指明,对于没有指明编码的页面,浏览器会根据是否设置了auto detect来进行编码识别(如在chrome中的View-Encoding菜单)

关于编码识别,Mozilla开源了其中的Mozilla Charset Detectors模块,感兴趣的可以对其进行学习

建议在http
header中指定编码,如果是在meta中指定,浏览器在得到html页面后会首先读取一部分内容,进行简单的meta标签解析来获得页面编码,如WebKit代码中的HTMLMetaCharsetParser.cpp,可以看出它的实现是查找charset属性的值,除了WebKit以外的其它浏览器也是类似的做法,这就是为何HTML5中直接使用如下的写法浏览器都支持

<meta charset="utf-8">

需要注意不设定编码会导致不可预测的问题,应尽可能做到明确指定

如淘宝页面:

加载

对于html的script标签,如果是外链的情况,如:

<script src="a.js"></script>

浏览器对它的处理主要有2部分:下载和执行

下载在有些浏览器中是并行的,有些浏览器中是串行的,如IE8、Firefox3、Chrome2都是串行下载的

执行在所有浏览器中默认都是阻塞的,当js在执行时不会进行html解析等其它操作,所以页面顶部的js不宜过大,因为那样将导致页面长时间空白,对于这些外链js,有2个属性可以减少它们对页面加载的影响,分别是:

  • async

    • 标识js是否异步执行,当有这个属性时则不阻塞当前页面的加载,并在js下载完后立刻执行
    • 不能保证多个script标签的执行顺序
  • defer
    • 标示js是否延迟执行,当有这个属性时js的执行会推迟到页面解析完成之后
    • 可以保证多个script标签的执行顺序

下图来自Asynchronous and deferred JavaScript execution explained,清晰地解释了普通情况和这2种情况下的区别

需要注意的是这两个属性目前对于内嵌的js是无效的

而对于dom中创建的script标签在浏览器中则是异步的,如下所示:

var script = document.createElement('script');
script.src = 'a.js';
document.getElementsByTagName('head')[0].appendChild(script);

为了解决js阻塞页面的问题,可以利用浏览器不认识的属性来先下载js后再执行,如ControlJS就是这样做的,它能提高页面的相应速度,不过需要注意处理在js未加载完时的显示效果

转载于:https://www.cnblogs.com/Alight/p/3374668.html

浏览器的加载顺序与页面性能优化相关推荐

  1. 如何提高页面加载速度 || 前端的性能优化 || 浏览器渲染页面的过程是什么

    1.降低请求量 ​ ① 合并资源,减少http请求数量. ​② lazyLoad,如图片懒加载.分批加载,每次只加载一部分. ​ ③ 使用字体图标或CSS绘制,来代替部分图片. 2.加快请求速度 ​ ...

  2. 如何减少页面加载时间(前端性能优化)

    关于优化都会问到的问题,总结了以下几个方法: 减少重复的HTTP请求 (1)减少调用其他页面.文件的数量,将多个小文件合并为一个大文件 (2)精灵图(sprite) 将需要频繁加载的多个图片合成为1个 ...

  3. ajax预加载html seo,前端性能优化 — JS预加载和懒加载

    JS预加载 需求:有时我们需要实现例如快速快速切换页面.图片之类的功能时,能尽快的加载出我们所需的图片会极大提升用户体验,这时用预加载将图片先缓存到浏览器,用户使用需显示图片时无疑会顺畅很多. 核心: ...

  4. Web前端教程分享:页面性能优化办法有哪些?

    引子 互联网有一项著名的8秒原则.用户在访问Web网页时,如果时间超过8秒就会感到不耐烦,如果加载需要太长时间,他们就会放弃访问.大部分用户希望网页能在2秒之内就完成加载.事实上,加载时间每多1秒,你 ...

  5. 页面性能优化办法有哪些? 1

    引子 互联网有一项著名的8秒原则.用户在访问Web网页时,如果时间超过8秒就会感到不耐烦,如果加载需要太长时间,他们就会放弃访问.大部分用户希望网页能在2秒之内就完成加载.事实上,加载时间每多1秒,你 ...

  6. 页面性能优化的五种办法

    前言 大部分用户希望网页能在 2 秒之内就完成加载.事实上,加载时间每多 1 秒,你就会流失 7% 的用户.如果加载需要太长时间,他们就会放弃访问. 以下是我总结性能优化常见的办法: 一.资源压缩与合 ...

  7. [WebKit]浏览器的加载与页面性能优化

    非常棒.非常系统的一份资料,值得阅读! 原文来自百度泛用户体验. 作者:nwind 本文将探讨浏览器渲染的loading过程,主要有2个目的: 了解浏览器在loading过程中的实现细节,具体都做了什 ...

  8. 转:浏览器加载页面的过程与页面性能优化

    本文是转帖,原文:http://www.baiduux.com/blog/2011/02/15/browser-loading/ 发布日期:2011年2月15日 作者:nwind 类别:HTML/CS ...

  9. 浏览器的加载与页面性能优化

    浏览器的加载与页面性能优化 Javascript 异步加载详解 HTML5 <script>元素async,defer异步加载 defer/async都是异步加载js,和HTML并行加载不 ...

最新文章

  1. php排版word文档试卷,word选择题选项排版
  2. tensorflow只用CPU运行
  3. 虚拟机中RedHat Linux系统安装
  4. iOS之仿QQ好友列表展开收缩效果的实现
  5. OpenOffice java api UNO 设置属性总结
  6. android 中 四舍五入的method */
  7. MySQL 创建联结
  8. python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)
  9. 阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件
  10. 基于bootstrap table配置的二次封装
  11. SGuard64.exe(SGuardwnd) ACE-Guard Client EXE:造成磁盘经常读写,游戏卡顿,及解决方案
  12. android apk加密技术,android apk 自我保护技术-加密apk
  13. 计算机网络 互联网使用的安全协议
  14. 发光学类毕业论文文献包含哪些?
  15. python语法简单吗_python基本语法练习实例 python好学吗? 语法简单吗? 举个例子?...
  16. 目标检测类mAP等衡量指标的含义和计算方法
  17. 电子计算机上面的mrc是什么意思,计算器中的M-键是什么功能?
  18. 2.4 人工智能项目开发与验收
  19. Conv2Former
  20. 阿里云IoT物模型-属性,服务,事件通信的topic和payload详解——设备管理运维类

热门文章

  1. php dw制作购物车,php – 以编程方式向WooCommerce购物车添加免税费用
  2. flir红外数据集_FLIR联合Foresight推广长波红外+可见光四摄视觉系统
  3. 基于yolo5工地安全帽和禁入危险区域识别系统,附数据集
  4. 中文问句匹配冠军团队的NLP读书会笔记分享
  5. chart控件支持鼠标滚轮放大缩小_强大的鼠标侧键功能设置工具:X-Mouse Button Control...
  6. python3生成随机数_python3实现随机数
  7. 数据结构排序系列详解之六 树形选择排序
  8. Team Foundation Server XXX 不存在,或者此时不可访问:解决方案
  9. Android数据存储之SQLite数据库存储
  10. 类型混淆漏洞实例浅析