网页加速之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
欢迎共同探讨.
网页加速之Chromium 预载入 Prerendering的更多相关文章
- seo网页加速技术,预加载 DNS Prefetching 详解
seo网页加速技术,预加载 DNS Prefetching 详解 DNS Prefetching 是什么 : DNS 是什么-- Domain Name System,域名系统,作为域名和IP地址相互 ...
- 网页加速特技之 AMP
据统计,40%的人会放弃使用加载时间超过3秒的网站.对于加载慢的页面我也是没耐心等待的,同类型网站那么多,为什么不选择加载速度更快体验更好的呢.为了解决网页加载慢的问题,Google联合数十家技术机构 ...
- 【转】W3C中国与百度联合组织移动网页加速技术研讨会
2017 年 8 月 30 日,W3C 会员百度在北京中关村软件园国际会议中心主办了 "移动网页加速技术研讨会",W3C 中国以及腾讯.阿里巴巴及 UC.搜狗.小米.傲游.中国移动 ...
- 预载入和JavaScript Image()对象
预载入和JavaScript Image()对象 很多high-res图像真的可以使 Web 站点更加整洁.但是它们也会使站点的访问速度变慢——图像是文件,文件使用带宽,带宽直接与等待时间相关.是该了 ...
- ViewPage+frament不预载入下一个Frament数据解决的方法
在做一个ViewPage+Frament 滑动数效果,当滑动到每一页时载入哪一页的数据,可是ViewPage会预载入下一也数据.这个问题之前做项目是一直未解决,今天找到一个方法一下子就解决的这个问题, ...
- ie 8在打印网页的时候打印预览是空白的
win 7专业版系统中的ie 8在打印网页的时候打印预览是空白的,打印出来也是空白的,但是用别的浏览器打印没有问题 根据您的描述,该问题主要是由于保护模式下%Temp%\Low不正常工作引起的. 建议 ...
- 学习ThinkPHP的第21天---关联预载入、关联统计
ThinkPHP关联预载入 预载入的作用是减少执行SQL语句,进而提升程序的性能. public function join(){ //用于监听SQL Db::listen(function ($sq ...
- 【网页加速】lua redis的二次升级
之前发过openresty的相关文章,也是用于加速网页速度的,但是上次没有优化好代码,这次整理了下,优化了nginx的配置和lua的代码,感兴趣的话可以看看上篇的文章: https://www.cnb ...
- jqprint的网页打印,打印预览可以包含图片
自己负责的模块需要有个试卷打印的功能,需要将网页特定范围内的内容打印出来,所以选择了jquery.jqprint脚本 用起来也非常简单. //打印 $("#printPage" ...
随机推荐
- C语言-实现字符串倒序输出
方法1: Action(){//倒序输出 char *src="abcdefgh123"; char *desc; desc=(char *)malloc(100*sizeof(c ...
- Optional是以enum和泛型为基础的高阶类型
结论:1.optionals使用时需要检查:2.可以通过!+赋值语句转化为非optionals. Optional-Generic Enumeration enum Optional<T> ...
- Js jquery常用的身份证号码 邮箱电话等验证
刷了很多博客,https://www.cnblogs.com/hao-1234-1234/p/6636843.html 只有这个比较靠谱.
- [NOIP补坑计划]NOIP2014 题解&做题心得
六道普及组题,没啥好说的 场上预计得分:100+100+100+100+100+100=600(省一分数线490) (AK是不可能AK的,这辈子不可能AK的) 题解: D1T1 生活大爆炸版石头剪刀布 ...
- ElementUi rules表单验证
ElementUi 表单验证 工作中常用到的JS验证 可以在pattern中书写正则,并且配合elementUI进行表单验证. pattern 属性规定用于验证输入字段的模式.模式指的是正则表达式. ...
- Adobe AIR and Flex - 保存序列化对象文件(译)
创建任何桌面应用程序几乎总是需要在本地存储数据,通过Adobe AIR我们有几下面几个选择,一个是我们能够使用内置的 SQLite 数据库支持,对于少量的数据这是大材小用了.另外一个选择是我们通过把数 ...
- 国庆 day 7 下午
思路:见博客. #include<iostream> #include<cstdio> #include<cstring> #include<algorith ...
- cocos2dx 触摸钢琴
1.触摸钢琴项目描写叙述 1.1触摸钢琴功能描写叙述 实现手指点按琴键发出相应的音调,按下位置出现星云的粒子特效,滚动实现移动到别的琴键的位置,按下安卓返回键运行关闭. 1.2触摸钢琴所需技术 粒子特 ...
- Android笔记---点击事件的四种写法
Android 点击事件的四种写法: 1. 以内部类的形式实现 OnClickListener 接口.定义点击事件 class MainActivity extents Activity{ // .. ...
- 自定义标签 Unable to find setter method for attribute
变量的首字母不能大写 http://blog.csdn.net/looksun/article/details/7690601