经过精心设计的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是一个开源项目,所有的标准并非一成不变。我们会持续不断进行优化,期待您的共同参与!