网页加速之Chromium 预载入 Prerendering
前一篇博文已经介绍通过prefetch预先载入网页的资源来提升网页载入速度,以下我们一起来看一下网页加速之chromium prerendering.在介绍prerendering之前,先介绍两个概念:
背景:
打开这个链接我们能够看到视频里的Google搜索结果页对照, 使用prefetching 的效果能马上显示出网页. 这样的结果相信大家都会感到吃惊. so amazing!!
可能技术人员更加关心Google chrome怎样做到的。以下我们一起来探秘prerendering实现。
什么是prerendering ?
用户的下一页能马上显示就是通过prerendering技术实现的。
prerendering
扩展prefetching概念, 不只预先获取顶层的资源, prerendering 会预先在后台准备下一个页面所须要的全部资源。Prerending的行为有点像我们open behind(后台打开页面) 。当我们把后台页面切换到前台时能马上显示网页。"background tab" 用户是全然不可见的, 当用户要切换到这个background 页面时。 后面的background tab 会被swap到前段, 这样用户能马上看到网页信息。
触发prerendering语法
<span style="font-size:14px;"><link rel="prerender" href="http://www.cmcm.com"> prerendercmcm </link></span>
prerendering 触发方式非常像firefox的prefetching 也是一个HTML中得<link> tag,可是chrome的 prerendering 不支持 meta-http和 hettp header触发。
浏览器怎样prerendering & prerendering时机
使用prerendering 限制与开关
hl=zh-CN">Page Visibility API
提供方便的途径来探測你的站点是否正在prerender。--prerender-from-omnibox=disabled
.探測一个网页是否正在被prerender
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHlwZW5hbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Prerender性能測试
site/page load time | enable prerendering | none prerendering | improve(%) |
www.cmcm.com | instant page | 9470 | 100 |
www.taobao.com | instant page | 1112 | 100 |
Prerender 在chromium中的实现
以下我们看一下chromium prerender过程。
当chromium主进程收到PrerenderHostMsg_AddLinkRelPrerender时。会检測当前是否有过多的渲染进程,假设已经有同样的任务在进行则不做处理,反之就会对接收到的url进行prerender。在android上因为有限的资源限制会重用prerendering使用的process,
为了回收资源chromium会在此启动一个计时器来销毁未被使用的prerender 后台页面。
在chromium35版本号中定时器时间是1000毫秒(ms) 在早期的chromium实现其中是30ms,当然这个数值未来还会发生变化。
hl=zh-CN
欢迎共同探讨.
最新文章
- Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode
- 深入理解openstack网络架构(1)
- I Count Two Three---hdu5878(打表+二分)
- Solaris进程管理
- Awstats分析Nginx日志
- txt无法正常保存正文的解决办法
- (三)跟我一起玩Linux网络服务:DHCP服务配置之主服务器配置
- Spring与Mybatis配置问题
- 开展project 正常的生活之路
- 安装WindowsXP操作系统(安装版) - 初学者系列 - 学习者系列文章
- CreateForm(
- linux终端自定义命令的别名
- SharePoint 用户控件编写的简单介绍
- kafka单机搭建,并测试api
- VideoPlayer播放
- mfc 类型间的强制转换
- 人类基因组三代组装: cano
- linu 把文件中的字母小写转换为大写,大写转换为小写awk toupper tolower
- windows 系统无法启动windows event log 服务
- 【转】【备忘录】MySQL性能优化的21个最佳实践 和 mysql使用索引