怎样经由过程预减载器提拔网页减载速率
预减载器(Pre-loader)能够道是进步阅读器机能最主要的办法。Mozilla 民圆公布数据,经由过程预减载器手艺网页的减载机能提拔了19%,Chrome测试了 Alexa 排名前2000名网站,机能有20%的提拔。
它其实不是一门新手艺,有人以为只要 Chrome 才具有那个功用。也有人以为它是有史以去提拔阅读器机能最有用的办法。假如您第一次打仗预减载器,或许心中曾经有了无数个问号。甚么是预减载器?它是怎样提拔阅读器机能的?
尾先需求理解阅读器是怎样减载网页的
一个网页的减载依靠于剧本文件、CSS款式文件。让我们看看阅读器减载网页的历程。
尾先,阅读器下载 HTML 并开端剖析。假如阅读器发明内部CSS资本链接则收收下载恳求。 阅读器能够正在下载CSS资本的同时,并止剖析HTML文件,可是,一旦发明有剧本文件的援用,则必需等候剧本文件完成下载而且施行后才气持续剖析。 剧本文件完成下载而且施行后,阅读器能够持续剖析HTML事情,假如逢到非壅闭资本 i.e. 图片阅读器会收收下载恳求而且持续剖析。
即便阅读器能够并止施行多个恳求,可是没法取针对剧本文件的操纵并止施行。
能够经由过程IE7翻开链接中的网页停止测试。我们能够看到,网页head标签内包罗2个款式文件战2个剧本文件。正在body 中,包罗3个图片、1个剧本文件。
经由过程瀑布流我们能够检察资本减载的历程:
剧本文件的下载战施行,会阻断其他资本文件的下载,无疑将年夜年夜低落阅读器机能。
预减载器怎样进步收集操纵率
2008 年,IE、WebKit战Mozilla皆真现了预减载器功用,去提拔收集的操纵率,改进剧本文件对其他资本文件的壅闭近况。
当阅读器被剧本文件壅闭时,另外一个沉量级的剖析器会持续阅读盈余的标识表记标帜,寻觅需求下载的资本i.e. 款式文件, 剧本文件,图片 等。
一旦发明,预减载器既能够正在背景开端领受那些资本,等候主剖析器完成当前的剧本操纵,其他资本曾经完成下载,那样便加沉了剧本壅闭带去的机能益耗。
上面那个瀑布流是利用IE8翻开链接中网页的成果,机能有隐著的提拔:IE8=7S > IE7=14S。
预减载功用仍旧是各年夜阅读器厂商乐此没有疲的尝试范畴。许多阅读器测验考试设置资本下载的劣先级。比方,Safari低落了没有做用于当前视图地区款式文件的劣先级。Chrome 则设置剧本文件的劣先级下于图片,即便剧本文件位于HTML底部。
预减载器的圈套
预减载器只能检索HTML标签中的URL,没法检测到利用剧本代码增加的URL,曲至剧本代码施行时才能够获得那类资本。
我已经逢到过一个经由过程javascript判定当前Window宽度,进而决议计划减载CSS款式文件的例子。预减载器没法辨认此类资本。
<html>
<head>
<script>
var file = window.innerWidth < 1000 ? "mobile.css" : "desktop.css";
document.write('<link rel="stylesheet" type="text/css"
href="css/' + file + '"/>'); </script>
</head>
<body>
<img src="img/gallery-img1.jpg" />
<img src="img/gallery-img2.jpg" />
<img src="img/gallery-img3.jpg" />
<img src="img/gallery-img4.jpg" />
<img src="img/gallery-img5.jpg" />
<img src="img/gallery-img6.jpg" />
</body>
</html>
上里那段代码能够沉紧的骗过IE9的预减载机造,正在上面的瀑布流中我们能够看到,减载图片占用了一切的毗连,曲至第一个图片减载完成后,CSS文件才开端下载。
影响预减载器的减载次第的果素
当前,有几种方法去掌握预减载器的减载次第(利用javacript躲藏资本文件既是此中一种),同时,W3C Resource Priorities 中也供给两个特性去影响预减载器。
lazyload : 曲至出有被标识表记标帜为lazyload 资本下载终了后才下载被标识表记标帜资本。
postpone: 资本正在对终极用户可睹以后才开端下载。i.e. 标签的display属性被设置为 none。
预减载VS预读与
预读与(Pre-fetching)能够告诉阅读器哪些资本能够会正在将来的某一机会,正在当前页里大概其他页里中利用。
上面是预读与的一个简朴的使用,告诉阅读器为将要会见的其他站面减载资本:
<link rel="dns-prefetch" href="other.hostname">
Chrome许可我们预先告诉阅读器减载将来会用到的资本,被声明的资本将以较下的劣先级被下载
<link rel="subresource" href="/some_other_resource.js">
(Chromium 源码中提到,被标识表记标帜为subresource的资本下载的劣先级低于款式文件战剧本文件,但没有低于图片减载劣先级)
借有标识表记标帜能够告诉阅读器哪些文件是较初级此外预读与文件。
预读与将来将被利用的自力资本文件。
<link rel="prefetch" href="/some_other_resource.jpeg">
经由过程预读与方法,正在背景衬着全部页里。
<link rel="prerender" href="//domain/next_page.html">
总结
预减载没有是一门新手艺,它对进步阅读器机能具有留念意义,我们没有需求做任何操纵既能够利用预减载。
它普遍使用,我测试了以下阅读器,皆具有预减载功用:
- IE8 / 9 / 10
- Firefox
- Chrome (inc Android)
- Safari (inc iOS)
- Android 2.3
Bruce Lawson (Opera公司总裁)也颁布发表Opera Mini 一样撑持预减载。
注:相干网站建立本领浏览请移步到建站教程频讲。
相关信息
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|