MIP HTML规范说明 MIP HTML规范介绍

 更新时间:2016年12月21日 21:01  点击:2077
本节的主要内容为MIP HTML规范说明,这是了解MIP的第一步,下面小编将为大家带来MIP HTML规范的详细说明介绍。

头部使用规范

  • 起始标签使用 <!doctype html>

  • html标签必须加上mip标记,即: <html mip>

  • 必须包含 <head>和 <body>标签

  • 必须在head标签中包含字符集声明: <meta charset="utf-8">,字符集统一为utf-8

  • 必须在head标签中包含viewport设置标签: <meta name="viewport" content="width=device-width,initial-scale=1">,推荐包含minimum-scale=1

  • 必须在head标签中包含 < link rel="stylesheet" type="text/css" href="https://mipcache.bdstatic.com/static/v1/mip.css" >

  • 必须在body标签中包含 <script src="https://mipcache.bdstatic.com/static/v1/mip.js" ></script >

  • 必须在head标签中包含 <link rel="canonical" href="http(s)://xxx" >

页面元素使用规范

MIP HTML 禁止使用对页面性能以及安全有较大影响的标签,请将其替换为MIP的特有标签(例如:将img标签替换为mip-img):

标签 使用范围 备注
img 替换为mip-img
video 替换为mip-video
audio 替换为mip-audio
iframe 替换为mip-iframe
style 替换为<style mip-custom> 只能在head标签中使用一次
script 禁止使用 禁止使用script标签, 以下两种情况除外:1)外链mip组件所需js,2)type为 "application/ld+json" 或 "application/json"
svg 允许使用
button 允许使用
link 允许使用
a 允许使用,建议使用mip-link组件代替 不可以href="javascript:",target必须设置为_blank
frame 禁止使用
frameset 禁止使用
object 禁止使用
param 禁止使用
applet 禁止使用
embed 禁止使用
form 替换为mip-form 内部允许使用input、textarea标签
input elements 禁止使用 包括: select, option

HTML 属性

  • MIP HTML 中所有on开头的属性都不允许使用,如:onclick,onmouseover。
  • MIP HTML 中允许使用on属性。
  • MIP HTML 中不允许使用style属性。

自定义样式使用规范

出于性能考虑,html 中不允许使用内联style,所有样式只能放到head 的 style 标签里。

正确:

<head>

<stylemip-custom>

p{color:#00f;}

</style>

</head>

<body>

<p>Hello World!</p>

</body>

错误:

<pstyle="color:#00f;">Hello World!</p>

验证规范

MIP校验工具地址:https://www.mipengine.org/validator/validate

本次一聚教程网为大家带来的是mip完整dome,让大家初步的了解mip加速是怎么实现的,下面请看详细的介绍。

完整DOME如下:

为防止js自动生成,所以使用了截图的形式。

1.jpg

本次为大家带来的是MIP加速原理介绍,将为您详细阐释MIP页面的加速原理,下面请看详细内容。

经过精心设计的JavaScript

为了去除臃肿的客户端脚本,MIP文件不允许自定义JavaScript;对一些强依赖JavaScript的功能(如:广告、统计和交互),MIP提供与MIP runtime兼容的封装好的组件来实现。

JavaScript 引用原则:

  • 目前MIP不允许用户自定义JavaScript,需要用MIP 组件的形式引进来,从而确保安全性和性能表现

  • 可以引用mip-iframe来引入实现部分富交互的功能,这样,即使开发时使用最影响性能的document.write,也不会影响主页面的渲染

  • MIP组件是开源的,允许开发者自定义功能组件,项目也将持续提供多样的组件,以适应不同的需求

所有静态资源需要标明尺寸

在页面开发时,资源常常不会被设定宽高,特别是使用广告或者通过调用 `document.write() 注入的时候。由于资源大小不能确定,页面经常要进行反复重新的绘制;

现在,MIP要求将所有的资源(广告、图片、音频和视频)标明尺寸。当资源真正加载时,所有资源大小可以被立即推断出并迅速的用于计算页面布局,加载中的资源将无缝呈现,不必因为页面频繁更新布局而影响到用户的阅读体验。

不允许任何机制阻止页面渲染

开发者的任何自定义脚本,都需要用MIP的tag反馈给MIP,例如mip-ad、mip-iframe等,这些方式不会阻塞页面的layout和渲染。

控制外部资源加载

MIP runtime会控制外部资源的额加载来确保其高效性,从而使用户想阅读的内容尽快出现在屏幕中。

封装交互功能

MIP提倡网页能给用户直接简单的体验,但这并不意味着MIP限制了页面的生动和有趣。MIP runtime提供了高度优化的被封装的JavaScript,开发者无需投入过多精力去实现复杂的交互功能。

只允许inline的css

css的加载,会阻止页面的渲染,css内联可以减少客户端的开销。

只允许GPU加速的动画

MIP只允许用transforms和opacity来完成动画效果,当动画能在GPU上执行时,仅触发渲染层合并。

MIP 缓存

MIP另一个重要的意义在于能够帮站长加速网页,百度将会把MIP网页缓存到百度CDN中。只要符合MIP标准,都可以使用MIP缓存。

开放且持续更新

MIP是一个开源项目,所有的标准并非一成不变。我们会持续不断进行优化,期待您的共同参与!

MIP的全称是Mobile Instant Pages,中文名字为移动网页加速器, 是一套应用于移动网页的开放性技术标准。通过提供MIP-HTML规范、MIP-JS运行环境以及MIP-Cache页面缓存系统,实现移动网页加速。

MIP主要由三部分组织成:

  • MIP HTML
  • MIP JS
  • MIP Cache

MIP HTML 基于HTML中的基础标签制定了全新的规范,通过对一部分基础标签的使用限制或功能扩展,使HTML能够展现更加丰富的内容;MIP JS 可以保证 MIP HTML 页面的快速渲染;MIP Cache 用于实现MIP页面的高速缓存,从而进一步提高页面性能。

1. MIP HTML

MIP HTML 基于HTML基础规范进行了扩展,下面是一段简单的MIP HTML代码示例:

<!DOCTYPE html> 
<html mip> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> 
<link rel="stylesheet" type="text/css" href="https://mipcache.bdstatic.com/static/v1/mip.css"> 
<link rel="canonical" href="https://www.mipengine.org/"> 
<!-- noscript 标签是为了在不支持script的环境下快速的展现 mip 页面,推荐使用 --> 
<noscript> 
<style mip-officialrelease> 
body { 
-webkit-animation:none; 
-moz-animation:none; 
-ms-animation:none; 
animation:none
} 
</style> 
</noscript> 
</head> 
<body>Hello World!</body> 
<script src="https://mipcache.bdstatic.com/static/v1/mip.js"></script> 
</html> 

MIP HTML 规范中有两类标签,一类是HTML常规标签,另一类是MIP标签。MIP标签也被称作 MIP HTML 组件,使用它们来替代HTML常规标签可以大幅提升页面性能。

例如,mip-img标签,它使得图片只在需要时才进行加载,减少了页面渲染时间,节省了用户的流量。

阅读MIP HTML 规范了解更多信息。

2. MIP JS

MIP JS 用于管理资源的加载,并支持上述MIP标签的使用,从而确保页面的快速渲染,提高页面各方面的性能。

MIP JS 最显著的优势是能够异步加载所有外部资源,整个页面渲染过程不会被页面中的某些元素阻塞,从而实现页面渲染速度的提升。

此外,MIP JS 还涵盖了所有iframe的沙盒、于资源加载前提前计算页面元素布局、禁用缓慢css选择器等技术性能。

3. MIP Cache

MIP Cache 是一套基于代理的 CDN(Content Delivery Network) 缓存系统,可用于缓存所有被百度相关页面引用或者从百度相关服务点出的MIP页面。用户在访问 MIP 页面的时候,请求首先会发到 CDN 服务器,如果页面存在,则从 CDN 返回,如果 CDN 上不存在,则会请求第三方服务器。同时 MIP Cache 服务器会将页面缓存到 CDN 上。

在使用 MIP Cache 时,MIP 页面所需要的所有静态文件和外部资源都会被缓存到 CDN 上(视频除外),并且页面中的资源链接会被转换成相对地址,很大程度上提升了页面渲染速度。每一个 MIP 页面都会绑定一个验证系统,在页面进行渲染时,这种验证器可以直接在浏览器控制台中输出页面的错误;并且随着代码逻辑的变化,能够展示其对页面性能以及用户体验的影响。

[!--infotagslink--]

相关文章

  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • IE6-IE9中tbody的innerHTML不能赋值的解决方法

    IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </head> <body style="height:3...2014-06-07
  • 浅析Promise的介绍及基本用法

    Promise是异步编程的一种解决方案,在ES6中Promise被列为了正式规范,统一了用法,原生提供了Promise对象。接下来通过本文给大家介绍Promise的介绍及基本用法,感兴趣的朋友一起看看吧...2021-10-21
  • XML、HTML、CSS与JS的区别整理

    在BS中,xml,html,css和js我们都学过,起初分不清这四者的区别和联系,随着知识的增长,有了一些体会,下面通过本文给大家简单介绍 XML、HTML、CSS与JS的区别,需要的朋友参考下...2016-02-21
  • Angular.js中下拉框实现渲染html的方法

    这篇文章主要给大家介绍了关于在Angular.js中下拉框实现渲染html的方法,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来跟着小编一起来学习学习吧。...2017-06-24
  • angularjs中ng-bind-html的用法总结

    这篇文章主要介绍了angularjs中ng-bind-html的用法总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-05-27
  • 老生常谈javascript变量的命名规范和注释

    下面小编就为大家带来一篇老生常谈javascript变量的命名规范和注释。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-02
  • 详解JS ES6编码规范

    本章节讨论使用ES6编码风格到代码中需要注意的点。通过记住这些关键点,可以让我们写出更优美的、可读性更强的JavaScript ES6风格的代码。...2021-05-08
  • PHP中print_r、var_export、var_dump用法介绍

    文章详细的介绍了关于PHP中print_r、var_export、var_dump区别比较以及这几个在php不同的应用中的用法,有需要的朋友可以参考一下 可以看出print_r跟var_export都...2016-11-25
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • C#使用正则表达式过滤html标签

    最近在开发一个项目,其中有需求要求我们把一段html转换为一般文本返回,使用正则表达式是明智的选择,下面小编给介绍下C#使用正则表达式过滤html标签,需要的朋友参考下...2020-06-25
  • Framewrok7 视图介绍(views、view)使用介绍

    下面我们来看一篇关于Framewrok7 视图介绍(views、view)使用介绍吧,希望这篇文章能够帮助到各位朋友。 一、Views 与View的介绍 1,Views (<div class="views">) (1)Vi...2016-10-02
  • C# 使用 WebBrowser 实现 HTML 转图片功能的示例代码

    这篇文章主要介绍了C# 如何使用 WebBrowser 实现 HTML 转图片功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-11-03
  • JS实现pasteHTML兼容ie,firefox,chrome的方法

    这篇文章主要介绍了JS实现pasteHTML兼容ie,firefox,chrome的方法,涉及javascript针对页面元素的动态操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2016-06-24
  • 解析C#编程的通用结构和程序书写格式规范

    这篇文章主要介绍了C#编程的通用结构和程序书写格式规范,这里我们根据C#语言的开发方微软给出的约定来作为编写样式参照,需要的朋友可以参考下...2020-06-25
  • Monolog PHP日志类库使用详解介绍

    PHP日志类库在低版本中我们都没有看到了但在高版本的php中就有了,下面我们来看一篇关于PHP日志类库使用详解介绍吧. Monolog遵循PSR3的接口规范,可以很轻易的替换...2016-11-25
  • js innerHTML 改变div内容

    在做ajax无刷新时,我想很多朋友都会知道js innerHTML来更改 div 或table里面的值哦. JavaScript的innerHTML 永远不知道你可以改变的内容,一个HTML元素?也许你要...2016-09-20
  • 最全的Javascript编码规范(推荐)

    本文给大家总结了js编码规范知识,非常实用,在日常程序开发中经常可以用到,大家务必掌握...2016-06-24
  • IE6-IE9使用JSON、table.innerHTML所引发的问题

    这篇文章主要介绍了IE6-IE9使用JSON、table.innerHTML所引发的问题 ,需要的朋友可以参考下...2015-12-24
  • php获取当前url地址的方法介绍

    这篇文章介绍了php获取当前url地址的方法小结,有兴趣的同学可以参考一下 本文实例讲述了php获取当前url地址的方法。分享给大家供大家参考,具体如下: js 获取: ...2017-01-22