作者 | Brilliant Open Web 团队breezet、shdong
编辑 | 尾尾

为推进Web技术的发展,Brilliant Open Web团队特推出每月一期的《移动Web加速技术月报》,该月报将整理较流行的移动Web加速技术,并跟进各项技术的进展和发展方向,以期帮助开发者了解或选用相关的技术,把握技术发展趋势。欢迎关注【OpenWeb开发者】公众号并回复“加群”,一起探讨相关技术。

一、内容回顾

在上一期的月报中,我们梳理了移动Web加速技术的方向,并介绍了页面云加速相关的技术——页面云加速的主要核心其实就是使用云端缓存或代理的方案,让用户能通过更快的网络获取加载页面。主要的核心技术点有两部分:基于CDN的页面Cache或代理、基于端(Web容器或移动浏览器)与云端交互的协议机制。

本期,我们将聚焦到Web页面的预取和预渲染相关的技术上。

二、相关技术介绍:Web页面的预取和预渲染

页面快速加载是提升移动Web体验的一个非常重要因素。页面本身的渲染性能是很重要,但页面还有一些关于浏览器渲染性能以外的性能体验瓶颈。

当网站已经按照一些标准(类似AMP/MIP,或者简单的静态化基础HTML页面)进行构建之后,页面的渲染性能会被极大改善,如果希望页面能达到瞬时展现的体验,还依赖类似搜索结果页本身的内容分发平台提供更强大的预取和预渲染能力。

1. 浏览器预渲染/预取 API 的一些问题

移动浏览器下,点击搜索结果页所展示的某一结果,页面被渲染前有如下环节需要执行: 域名解析、建立连接、发起请求、处理请求、网络传输、页面渲染、资源加载。

对于移动互联网用户来说,这些环节太多,会耗费很多的时间,经过百度的实际测试,百度搜索结果中的站点平均首屏时间在3.5s左右。

类似AMP和MIP这类标准已经提供了CDN的缓存和渲染过程的优化,但是对于加载策略,预渲染控制,容器都还没有标准或者基于trick的实现,并没有办法达到瞬时打开的体验。

主要问题体现如下:

(1)预渲染策略

加载策略一方面考虑的是什么时候加载页面和资源,加载多少,从哪里加载以及加载的优先级。这一块更多的是业务应用上的考虑,不需要提供标准或浏览器的API。

另一方面考虑的是哪些页面适合被prefetch/prerender,以及prefetch/prerender对服务的HTTP请求的统计影响。而这一方面是需要有通用的标准(页面是否适合被prefetch/prerender)的,关于统计上的影响,也需要从浏览器发出的HTTP请求上考虑设计新的Policy(Policy Header)供服务端识别。

(2)对预取/预渲染的过程控制

link prefetch/prerender另一方面的问题是缺乏反馈机制,以及对过程的控制。百度对页面是否进行了prefetch/prerender会有一些产品策略上的需求(提供瞬时展现交互体验)和过程跟踪上的需求(帮助决策用户是否当前环境是否适合prefetch/prerender)。

上述两个问题都是目前link prefetch/prerender暂未提供的能力。

2. 技术展望

目前在百度搜索中,部分页面的预取/预渲染能力是通过JS资源请求 API的方式来满足的,从效果实现来看,能解决上述描述的大部分问题。

但类似更顺滑、更有效的预取/预渲染效果,我们希望能让更多的人享受到。所以从长期来看,推进预取/预渲染在浏览器标准实现上的能力增强,是一种更合理的方式。

三、主要技术进展

本月报将收录移动Web加速技术的主要进展,欢迎读者一起完善,投稿邮箱:openweb@baidu.com。

1. MIP本月进展

MIP的官方网站是:www.mipengine.org/ ,GitHub地址是:github.com/mipengine

MIP新增功能

(1)MIP bind双向绑定机制和组件上线,提供双向绑定的特性;能够允许页面实现数据驱动功能,开发者可以在任意场景修改数据,并驱动页面元素变动。

(2)支持头部async加载JavaScript脚本,脚本可以和页面DOM加载同步进行,减少了脚本加载时间的等待,加快了整个页面的渲染和展现速度。

(3)组件升级:mip-stats-baidu统计组件修复事件追踪、点出率等BUG;mip-form升级,去掉mip-form中的password和file限制。

MIP校验升级

(1)mip-vd-baidu组件校验升级,解决校验不一致的问题。

(2)script标签加载脚本校验,在head加载的JavaScript必须增加async属性。

2. AMP本月进展

AMP(Accelerated Mobile Pages)是谷歌提供的网页加速技术,其官方网站是:developers.google.com/amp/。

(1)amp-position-observer动画组件,使用这个组件来创建一系列的动画功能,如视差效果,微妙的缩放。

(2)amp-sidebar支持响应式设计。

(3)amp-analytics组件支持mip-video组件的数据统计。

(4)流式广告支持,能够在不知道广告尺寸的情况下加载广告。

(5)amp bind和amp list组件升级,以增强对新数据的支持。

(6)ampstart模板库上线,通过ampstart可以使用现成的AMP使用和分享AMP模板,模板,快速创建AMP页面,而不需要从头构建页面元素。

(7)AMP 项目启动两周年公布相关数据:AMP页面已达40亿个,AMP站点已达2500W个。

四、总结

移动Web加速的下一个方向应该是探索页面加速上的标准策略分级,并影响内容分发平台、搜索引擎等流量入口使用标准的页面性能分级来进行更广泛层面的引导,提升真实用户接触到的互联网站点的页面体验。

Brilliant Open Web

BOW(Brilliant Open Web)团队,是一个专门的Web技术建设小组,致力于推动 Open Web 技术的发展,让Web重新成为开发者的首选。

BOW 关注前端,关注Web;剖析技术、分享实践;谈谈学习,也聊聊管理。

关注 OpenWeb开发者,回复“加群”,让我们一起推动 OpenWeb技术的发展!

移动Web加速技术月报第2期相关推荐

  1. 移动Web加速技术月报第1期

    作者 | Brilliant Open Web团队breezet.JennyL 编辑 | 尾尾 为推进Web技术的发展,Brilliant Open Web 团队特推出每月一期的<移动Web加速 ...

  2. MIP 技术月报(4月):支持熊掌号登录;优化页面悬浮元素

    之前由MIP团队维护的<移动 Web 加速技术月报>从本期开始,正式升级为<MIP 技术月报>,与以往不同的是,<MIP 技术月报>将会与大家分享包含移动加速技术以 ...

  3. MIP技术进展月报第2期: 数据绑定,异步脚本加速

    一. 功能更新 1. mip-bind 上线,实现复杂交互 MIP bind 双向绑定机制和组件上线,提供双向绑定的特性:能够允许页面实现数据驱动功能,开发者可以在任意场景修改数据,并驱动页面元素变动 ...

  4. 极客技术专题【009期】:web技术开发小技巧

    为什么80%的码农都做不了架构师?>>>    日期:2013-8-26  来源:GBin1.com 技术专题:Seajs介绍 (分享人:choaklin) 专题演讲稿:SeaJS的 ...

  5. cocos creator 安卓原生平台环境_竞技对抗小游戏单挑篮球开发历程 | Cocos技术派第12期...

    本文来自于"Cocos 荣耀讲师"征稿活动第1期,最先发表于 Cocos 中文社区,作者 ID:蟹老板,2017年加入社区,文章作品包括<猎头专家的开发历程>等. Co ...

  6. JVM技术周报第2期

    JVM技术周报第2期 JVM技术周报分享JVM技术交流群的讨论内容,由群内成员整理归纳而成.如果你有兴趣入群讨论,请关注「Java技术精选」公众号,通过右下角菜单「入群交流」加我好友,获取入群详情. ...

  7. 千亿级流量来袭,如何用硬件加速技术为CPU减负?

    阿里妹导读:通用处理器(CPU)的摩尔定律已入暮年,而机器学习和Web服务的规模却在指数级增长.如何用硬件加速来提升性能.降低成本?下面我们一起来看看. 一.背景介绍 通用处理器(CPU)的摩尔定律已 ...

  8. 广州技术沙龙第 4 期报名开始!

    赖勇浩(http://laiyonghao.com) 特别告示 广州技术沙龙第 4 期,走出广州,走向深圳,将于 12 月 19 日在深圳深南东路的深圳发展银行大厦举行,并第一次组织了多达 4 个高质 ...

  9. 音视频技术开发周刊 94期

    『音视频技术开发周刊』由LiveVideoStack团队出品,专注在音视频技术领域,纵览相关技术领域的干货和新闻投稿,每周一期.点击『阅读原文』,浏览第94期内容,祝您阅读愉快. 架构 衡量视频质量有 ...

最新文章

  1. 嵌入式系统降低功耗的设计技术
  2. RNA-seq:【FastQC】
  3. JBoss、Tomcat Classloader不完全分析
  4. 不同域名cookie共享_cookie在二级域名间共享完成sso
  5. SIGIR 2019 | 为什么你的毛衣显胖又显黑?这个算法给你答案
  6. 【转】jquery 注册事件的方法
  7. Confluence Cloud的Teams Message Extension
  8. soapui自带的webservice实例 MockService
  9. linux 命令/目录 名称 英文单词 缩写 助记
  10. 字符串2在字符串1中第一次出现的位置strstr()
  11. 常用的正则表达式格式
  12. SecureCRT无法使用root账户远程连接ubuntu
  13. 做报表5年,被批Excel毫无新意,能开发的可视化报表让我重获新生
  14. amqp rabbitmq_Spring AMQP RabbitMQ示例
  15. Android设计模式系列-组合模式
  16. 6月中国最美的地方!对的时间就要去对的地方!
  17. 【深度学习论文阅读】TCN:An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence
  18. 在quartus II15.0中调用Modelsim进行时序仿真时出现Rerun the EDA Netlist Writer的原因
  19. java拆分_Java 拆分 PDF 文档
  20. iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件)

热门文章

  1. android中设置lmargin简书,超详细React Native实现微信好友/朋友圈分享功能-Android/iOS双平台通用...
  2. oracle导入dmp清除之前,oracle导入dmp遇到的有关问题
  3. 和氟西汀类似的备注_撒狗粮:可爱又霸气的给男朋友的微信备注
  4. 创建数组_如何创建数组
  5. 仪表盘刻度调整_惊艳了我的仪表盘 那些年我遇到最美的“面孔”
  6. shader 获取法线_Unity Shader 入门到改行5——法线贴图
  7. sparkstreaming 读取mysql_第十篇|SparkStreaming手动维护Kafka Offset的几种方式
  8. C语言如何编辑资源文件,用C语言做个简单的计算机,上面是代码,请教上资源文件在哪里编写,要新建什么文件...
  9. mysql workbench 1064_MySQL Workbench:查询错误(1064):第1行“ VISIBLE”附近的语?mysql-问答-阿里云开发者社区-阿里云...
  10. mysql+缓冲池脏块率高_什么是数据库的 “缓存池” ?(万字干货)