MIP实操指南

作者:鼎极网络发布日期:2019-11-15浏览次数:209

  “MIP (Mobile Instant Pages - 移动网页加速器),  是一套应用于移动网页的开放性技术标准。通过提供MIP-HTML规范、MIP-JS运行环境以及MIP-Cache页面缓存系统,实现移动网页加速。”本教程由MIP爱好者合力撰写,由百度工程师确认,会帮助你完整的搭建一个MIP站点。

  MIP是什么?

  MIP的定义

  MIP是Mobile Instant Pages的简称,也就是移动网页加速器,是一套应用于移动网页的开放性技术标准,使用  MIP无需等待加载,页面内容将以更友好的方式瞬时到达用户。其核心价值是提升了移动端渲染能力。

  

1.png

  (官网:https://www.mipengine.org/)

  MIP诞生的背景

  工信部2016年新发布的数据,移动互联网用户1月净增1942.1万户,同比增长11.8%,总数达9.8亿户。随着移动设备的性能不断提升、网络速度大幅提高,用户群体对移动网页等待的耐心在逐渐降低,更多的时候要求移动网页可以瞬间打开。

  以往研究数据表明网站打开速度对用户浏览、电商成单量、搜索引擎的搜索量等都有很大影响!

  如:  Facebook每慢500ms用户浏览下降3%,Amazon每增加100ms成单量下降1%,Google每增500ms搜索量下降25%等等;

  这种环境下,我们要考虑的问题,除了网站是否需要移动客户端外,还有如何程度的提高移动网站的用户体验。那么你的移动网页用户体验合格吗?打开的速度够快吗?内容够简洁突出吗?经常出现各种安全问题吗?

  万众瞩目下,百度推出了针对提高移动网页打开速度和用户体验的新标准规范,以及解决方案。

  

2.png

  MIP提升性能的奥秘

  通俗来讲,移动网站按照百度提供的网页标准规则进行修改,修改合格后,百度将你的网站放在百度服务器上面。你的移动网站在修改之后,不仅网页更加简洁规范,而且接入百度服务器之后网页的打开速度将非常之快,并且可以提升安全性能。

  MIP之所以可以达到这种效果主要归功于其组成的三部分:

  MIP HTML(页面标准主要包含Css、HTML代码、图片)——为了让移动网页更加简洁规范

  MIP JS (引用官方标准化JS文件)——提供了网页基础的JS需要

  MIP Cache(接入官方缓存服务器)——百度缓存服务器,加速环节重要的部分!

  

3.png

  MIP和CDN有什么区别

  从MIP性能表现上看,主要是体现在页面加载快,用户体验好等特点,所以很多人产生了疑问,MIP是不是等同于CDN,已经使用CDN还要不要改造成MIP?  接入MIP还要改,那么麻烦,那我直接用CDN多好?

  事实上他们还是有比较明显的区别,主要在五个方面:

  1、MIP要求站点必须按照 MIP标准进行修改或者重新制作,CDN只会站点提供节点加速服务,无需修改。

  2、MIP服务器基本上是在用百度移动端的快照缓存服务器。而CDN提供的节点是无法和百度服务器相媲美的。

  3、MIP地址使用是百度缓存服务器域名,可以提升一定安全性,而CDN还是自己的域名;

  4、MIP只针对移动页面进行加速,不影响PC端,而CDN则是可以支持不同用户端;

  5、MIP一项长久免费的开源计划,而大部分CDN是需要付费使用的。

  MIP HTML是为了更加规范移动网页而推出的网页标准,而不是单纯为了接入MIPCache服务器提出的标准。

  MIPCache部分确实相当于CDN的功能,但是这个MIPCache百度服务器数量是国内任何一家CDN节点数量上无法去相比的,而且还是免费提供给MIP站点的站长。

  百度蜘蛛对于移动站点的抓取,接入MIP Cache的MIP站点更加有优势,因为网页已经早已缓存到百度服务器。而这一点,更是CDN无法相比的。

  MIP改造难不难?

  通俗讲,MIP的改造,就是一些基础的HTML标签替换成MIP HTML标签,接入百度缓存服务器的过程。

  我看到有人在改MIP站点的时候,抱怨,好难,这个功能没有,那个组件没有。其实,MIP的旨意不是让你继续沿用过去网页的标准,而是为了提高网页的打开速度,通过MIP的新标准,去简化规范网页。

  所以说,根据MIP HTML标准修改原网站,或者根据MIP  HTML新建网站模版,是非常简单的。由于目前是MIP前期,建议大家采取新建MIP站点,并保留原移动站点的模式。

  加入MIP的必要性

  MIP能做什么

  MIP能帮助站长和网站开发者快速搭建移动端页面。

  MIP怎么加速?MIP从前端渲染和页面网络传输两方面进行优化,杜绝页面渲染中的阻塞问题,提升页面展现速度。

  移动站应该用MIP吗?这里有五个原因,告诉你MIP的好处:

  加速移动端页面,一切的基础

  为减少DNS解析,MIP-Cache将静态文件以相对路径储存在百度CDN中;为减少网络传输耗时,MIP-JS  控制静态资源的按需加载,MIP-Cache系统优先从CDN读取文件;为减少浏览器渲染重绘耗时,MIP-HTML  对<img>,<video>等造成浏览器重绘的标签进行了封装控制。

  根据2016年8月数据,页面MIP化之后,页面展现时间减少了30%-80%。如果您的页面只有简单交互,却引用了庞杂的前端代码库,那么尝试MIP之后速度能够得到显著提升。

  速度对于页面意味着什么呢?如果一个页面需要3秒来打开,用户就需要盯着白屏等待三秒,这很容易引起用户的不耐和放弃。也就是说,一个页面能在眨眼之间打开,意味着更少的用户放弃。所以说,对于页面来讲,速度是一切的基础。

  提升到达率和用户体验,更少的流失率

  正如上文提到,使用MIP规范之后页面的打开速度会大幅提高,减少用户的等待时间,减少用户放弃。

  试想一下,当全站的每个页面都能在1秒内打开,用户每次点击都会立马得到相应,那么就会提高用户体验和满意度。如果页面内容有趣,用户就会在各个页面间冲浪(Surf)。在日均UV(Unique  Visitor, 独立访客)不变的情况下,页面的PV(Page View)会有所增加。此时,用户消费了更多网页提供服务时,页面广告也会得到更多的曝光。

  百度搜索提权,的用户量

  众所周知,百度的自然结果是根据用户点击和页面质量排名的。在2015年年底,我们推出了《百度搜索Mobile  Friendly标准》(下文简称《MF标准》),在站长平台的说明中,《MF标准》也会作为页面排序的参考因素。

  在《MF标准》中,有页面加载速度体验一项。使用MIP规范,能够加快网页加载速度,使页面标准。

  开发简单,迁移成本低

  迁移已有页面到MIP并不是一件困难的事情。MIP-HTML组件和JS运行环境与前端代码语法相同,官网文档中有详细的步骤,我们也会陆续推出文字和视频教程。我们还为开发者提供了实时校验工具,帮助MIP用户开发出完全符合规范的页面。

  已有组件兼容性好,也可个性化定制新组件

  MIP-HTML  拥有不断完善的的组件库可以使用。图片预览,视频播放,分享组件均已上线。直接使用已有组件,能够代码质量和各个终端浏览器的兼容性。利用小快的方式达到交互效果。

  除此之外,MIP是一个开源的项目,提供了《扩展组件开发规范》,支持MIP用户自己开发个性化组件,交由MIP开发小组审核后即可上线使用。

  如何加入MIP

  什么网站适合加入MIP

  结合目前MIP官网技术文档和已有案例反馈,MIP已经可以完美支持资讯、图片、企业、小说、论坛等信息流类型的网站。复杂的页面暂不建议MIP改造,目前对资讯、图文类支持已较好,若功能较为复杂的建议自定义组件或等待MIP项目小组开发。

  

4.png

  抛开网站类型不谈,存在以下问题的网站更要加入MIP:

  1、网站加载速度慢,打开速度时间长

  影响网站加载速度的因素除了外在因素(服务器带宽、庞大的数据库)外,绝大多数是网站本身的问题,例如:冗余代码、用了大量js调用,网站图片太大、flash文件等。MIP的规则就是针对MIP-HTML规范、MIP-JS运行环境以及MIP-Cache页面缓存系统进行优化,实现移动网页加速。

  2、用户体验差,跳出率较高的网站

  网站弹出广告过多、内容质量差、加载速度慢都是影响用户体验差的因素,为了避免这些现象,MIP要求将所有的资源(广告、图片、音频和视频)标明尺寸。当资源真正加载时,所有资源大小可以被立即推断出并迅速用于计算页面布局,加载中的资源将无缝呈现,不必因为页面频繁更新布局而影响到用户的阅读体验。而且MIP提供与MIP  runtime兼容的封装好的组件来实现,严格控制外部资源的加载,来确保其高效性,开发者的任何自定义脚本,都需要用MIP的tag反馈给MIP,例如mip-ad、mip-iframe等,这些方式不会阻塞页面的layout和渲染。

  MIP改造难不难?

  通俗讲,MIP的改造,就是一些基础的HTML标签替换成MIP HTML标签,接入百度缓存服务器的过程。

  有人在改MIP站点的时候,抱怨,好难,这个功能没有,那个组件没有。其实,MIP的旨意不是让你继续沿用过去网页的标准,而是为了提高网页的打开速度,通过MIP的新标准,去简化规范网页。

  所以说,根据MIP HTML标准修改原网站,或者根据MIP  HTML新建网站模版,是非常简单的。由于目前是MIP前期,建议大家采取新建MIP站点,并保留原移动站点的模式。

  加入MIP的接入流程

  经过前面的内容介绍,相信你已经迫不及待想加入MIP生态了吧。如果你的网站在上述MIP支持的改造范围中,那么只需要4个步骤即可完成MIP网站改造:

  

5.png

  (1) 改造评估:

  评估自身网站情况是否适合改造MIP,如果支持则要选择一套改造方案;目前主要有两种方式,一是在原页面上进行改造,另外一种是新建一套MIP模板。

  原有页面修改方案:主要适用于拥有独立移动站的网站,优点是改造内容少,技术成本低,方便维护等优点 ;

  新建MIP页面方案:适用于目前所有网站的情况,具有独立好操作,改造干扰少,未知风险小等特点,美中不足的是因为是新的url,需要蜘蛛从新抓取,接入速度略慢;

  (2) 页面改造:

  确定改造方案后,,按照MIP官网内容要求进行代码改造。改造需具备一定的html知识,改造MIP教程请按照教程来,特别注意大小写,建议全局小写。如果初次接触MIP,可以先学习下《新手指南》,更详细请参考《如何用MIP的快速搭建移动页面》。

  

6.png

  (3) 工具校验:

  页面改造完成后,可以通过官方工具进行校验,工具会给出是否合格的提示;点击进入检验地址:https://www.mipengine.org/validator/preview

  

7.png

  (4)数据提交:

  校验合格后,通过站长平台的MIP工具,以主动推送的方式进行数据提交;

  MIP提交地址:http://zhanzhang.baidu.com/mip/index

  

8.png

  (5)线上生效:

  当MIP数据库收到站点提供的数据,会对数据进行抓取、收录、校验等一系列的步骤,后在线上生效,并且在快照上回有一个

  

9.png1.png

  

  MIP快速搭建移动页面通用篇

  如何快速完成MIP改造?网站可以选择直接将原先的移动站点直接改成MIP站,也可以单独再做一套MIP站点与移动站并存。

  从一个html页面的上下顺序一步步改造,只要按照本文章内的一步步来,即可完成MIP改造。

  1. Doctype改造

  1.1 打开你的模板或代码文件看行,将<! DOCTYPE ***>改为<!DOCTYPE html>

  2. <Html>标签改造

  2.1 完成步后,继续修改下一行代码,将: <html  xmlns="http://www.w3.org/1999/xhtml">或:<html> 改成:<html  mip>注意全部小写

  3. Head部分改造

  3.1 <head>标签必须是完全小写。

  3.2 页面的编码必须是utf-8,修改声明为:<meta charset="utf-8">

  3.3 页面中加入<meta name="viewport" content="width=device-width,  minimum-scale=1, initial-scale=1">

  3.4 页面中加入MIP专用样式文件< link rel="stylesheet" type="text/css"  href="https://mipcache.bdstatic.com/static/mipmain-v1.0.1.css" >

  3.5 这里需要告诉搜索引擎改页面对应的标准html页面地址,如果存在则标识<link rel="canonical"  href="H5/PC原页面">  其中href值修改成为与当前mip页面相对应的标准页面url地址。如果只有mip页面没有相对应的标准页面则标识为:<link  rel="standardhtml" href="MIP自身"> 其中的href值为当前页面地址。

  4. Body内改造

  4.1 首先<body>标签必须是小写的;

  4.2 加入MIP专用JS文件:<script  src="https://mipcache.bdstatic.com/static/mipmain-v1.0.2.js"></script>

  4.3 替换<img>, <style>, <frame>, <form>,<  input>, <textarea>, <select>,  <option>标签为对应MIP组件标签,具体见官网文档。

  4.4 引用MIP-JS 运行环境 <script src=  "https://mipcache.bdstatic.com/static/mipmain-v1.1.0.js"></script>放在页面尾部。

  5. 使用MIP Cache注意事项

  5.1 一般Cache图片、样式、脚本,做完上述4步后,修改资源地址为相对地址或合法地址(以校验工具为准);

  5.2 Cache的内容需要更新需要通过MIP数据提交中的更新数据接口,把更新的url链接推送过去,等待百度更新。

  6. 组件的使用

  6.1 除了上述这些需求外,一部分站点可能需要用到组件,官网文档包含了目前支持的所有组件,详见《组件概述》。

  6.2目前官网开发了很多通用性组件,并提供了使用示例,以百度统计组件为例:在百度统计中申请js统计代码,将其中的token值截取出来,如下图所示字符串:

  

10.png

  将字符串以<mip-stats-baidu  token="02890d4a309827eb62bc3335b2b28f7f"></mip-stats-baidu>的形式植入到页面中,并在页面中嵌入  <script  src="https://mipcache.bdstatic.com/static/v1.1/mip-stats-baidu.js"></script>

  以上步骤就可以将百度统计组件植入到MIP页面中了!

  6.3特定组件的使用:对于官网没有的组件,网站可以自主开发组件接入,具体方法可以参考《扩展组件开发规范》;


关键词:

HTTP状态码是用以表示网页服务器HTTP响应状态的3位数字代码

代码说明

  100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的部分,正在等待其余部分。

  101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。

  2xx (成功)

  表示成功处理了请求的状态代码。

  代码 说明

  200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。

  201 (已创建) 请求成功并且服务器创建了新的资源。

  202 (已接受) 服务器已接受请求,但尚未处理。

  203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。

  204 (无内容) 服务器成功处理了请求,但没有返回任何内容。

  205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。

  206 (部分内容) 服务器成功处理了部分 GET 请求。

  3xx (重定向)

  表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

  代码 说明

  300 (多种选择) 针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。

  301 (移动) 请求的网页已移动到新位置。 服务器返回此响应(GET HEAD 请求的响应)时,会自动将请求者转到新位置。

  302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

  303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。

  304 (未修改) 自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。

  305 (使用代理) 请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。

  307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

  4xx(请求错误)

  这些状态代码表示请求可能出错,妨碍了服务器的处理。

  代码 说明

  400 (错误请求) 服务器不理解请求的语法。

  401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。

  403 (禁止) 服务器拒绝请求。

  404 (未找到) 服务器找不到请求的网页。

  405 (方法禁用) 禁用请求中指定的方法。

  406 (不接受) 无法使用请求的内容特性响应请求的网页。

  407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。

  408 (请求超时) 服务器等候请求时发生超时。

  409 (冲突) 服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。

  410 (已删除) 如果请求的资源已删除,服务器就会返回此响应。

  411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。

  412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。

  413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

  414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。

  415 (不支持的媒体类型) 请求的格式不受请求页面的支持。

  416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。

  417 (未满足期望值) 服务器未满足"期望"请求标头字段的要求。

  5xx(服务器错误)

  这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

  代码 说明

  500 (服务器内部错误) 服务器遇到错误,无法完成请求。

  501 (尚未实施) 服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。

  502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。

  503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。 通常,这只是暂时状态。

  504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。

  505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。