了解MIP(Mobile Instant Pages)
- 为减少DNS解析,MIP-Cache将静态文件以相对路径存储在百度CDN中;
- 为减少网络传输耗时,MIP-JS控制静态资源的按需加载,MIP-Cache系统优先从CDN读取文件;
- MIP-JS是MIP的运行环境,包括基本类引入(AMD),内置组件加载(mip-img),外置组件管理(组件css插入)以及组件布局管理(解决布局兼容性问题)
- MIP-JS优点:
- 使用精简的基础类,尽量减少网络传输时间
- 内置优秀的组件,在不阻塞浏览器渲染的前提下提供最好的交互体验
- 提供组件布局管理,预先为组件设定宽高,避免组件加载后的浏览器重布局
- 为减少浏览器渲染重绘耗时,MIP-HTML对<img>、<video>等造成浏览器重绘的标签进行了封装控制。
- img标签替换成mip-img,利用懒加载和按需加载提高页面的渲染速度
- 自定义交互组件,如轮播、表单、分享等,依赖自身的脚本和MIP-JS就能运行,无需引入第三方库。减少页面发送的网络请求和传输时间,加快了页面的传输和渲染。
- MIP要求站点必须按照MIP标准进行修改或者重新制作,CDN只会站点提供节点加速服务,无需修改。
- MIP服务器基本上是在用百度移动端的快照缓存服务器。而CDN提供的节点是无法和百度服务器想媲美的。
- MIP地址使用是百度缓存服务器域名,可以提升一定安全性,而CDN还是自己的域名。
- MIP只针对移动页面进行加速,不影响PC端,而CDN则可以支持不同用户端。
- MIP是一项长久免费的开源计划,而大部分CDN是需要付费使用的。
- 页面的缓存时间是最短52分钟~最长5天(具体时间由该页面用户点击量和站点本身稳定性决定)
- 图片缓存时间为10天
- MIP-JS组件文件的缓存时间为10分钟
- MIP-Cache快速更新机制,MIP-Cache开放了单独清理的接口,具体参考 MIP-cache 清理,生效时间大概5min
- 加速移动端页面
- 提升到达率和用户体验,更少的流失率
- 百度搜索提权,更大的用户量
- 百度的自然结果是根据用户点击和页面质量排名的。《百度搜索Mobile Friendly标准》的页面可读性包含了:页面加载速度体验、页面结构、页面浏览体验。
- 开发简单,迁移成本低
- 已有组件兼容性好,也可个性化定制新组件
- <head>标签必须完全小写
- 页面的编码必须是utf-8,修改声明为<meta charset="utf-8">
- 页面中加入<meta name='viewport' content='width=device-width,minimum-scale=1,initial-scale=1'>
- 页面中加入MIP专用样式文件<link rel='stylesheet' type='text/css' href='https://mipcache.dbstatic.com/static/v1/mip.css'>
- 告诉搜索引擎改页面对应的标准html页面地址,如果存在则标识<link rel='canonical' href='http://www.baidu.com'>其中href值修改为与当前mip页面相对应的标准页面(移动页)url地址。如果只有mip页面没有对应的标准页面就将href修改为当前mip页面地址就行了。
- 首先body标签必须小写;
- 将img、style、frame、form、input、textarea、select、option标签替换成对应的mip组件标签;
- 引用MIP-JS运行环境:<script src='https://mipcache.dbstatic.com/static/v1/mip.js'></script>放在页面的尾部。
- 一般cache图片、脚本、样式,做完上述4步后,修改资源地址为相对地址或合法绝对地址(以校验工具为准);
- cache的内容需要更新要通过MIP数据提交中的更新数据接口,把更新的url链接推送过去,等待百度更新。
- 如果同样的内容既存在对应的pc页面,也存在移动页面,那么href指向百度移动搜索流量大的页面。
- 如果是动态页面,原页面已经存在canonical标签,则href指向与原页面指向一致。
- 如果原页面有多个版式,href指向流量最大的页面。
- 如果没有对应的原页面url(如新建的mip站),或者直接在当前url进行MIP改造并直接生效 ,则href指向mip页面本身。
<link rel="miphtml">
在H5页使用,指向对应内容的MIP页,方便搜索引擎发现对应的MIP页。<link rel="canonical">
在 MIP 页中使用, 指向内容对应的 H5 页面。- 若没有 H5 页,则指向内容对应的 PC 页。
- 若直接在原链接修改 MIP,则canonical指向当前 URL。
- MIP页面与原始页面的主体内容应该大致相同。如果内容相差较大,被搜索引擎判定主体内容不一致的话,会认为canonical标签无效。
- 原页面与MIP页面的url的对应关系应该尽量简单、直接。原网页出现的文档名或者文档id,在MIP页面命名时候也要出现。简单直接的对应关系有利于搜索引擎分析mip页面与原页面的关系,加快MIP页面被收录和展现的速度。
- 确保安装了node(v>=4.x)和git,然后输入npm install -g mip-cli,安装好后输入mip -v查看mip版本号。
- 安装mip-extension-optimizer,它是mip组件编译工具,用于将mip-extension中的特定组件源码编译成js文件。输入npm i -g mip-extension-optimizer
- 创建开发文件结构
- 初始化mip配置,在html目录下输入mip init将创建mip.config文件。
- 新建一个mip页面,在html目录下输入mip add index.html将新建一个index.html文件,这个页面就是一个基础的MIP页面。当然,在新建页面的时候可以同时载入mip组件js脚本,如mip add index.html mip-share
- 编写mip页面代码,注意符合mip网页规范,mip校验规则地址:https://www.mipengine.org/doc/2-tech/2-validate-mip.html
- 校验MIP网页:mip validate index.html,线上校验器地址:https://www.mipengine.org/validator/validate
- 调试MIP网页:在html项目目录输入mip server,访问http://127.0.0.1:8000进入调试页面
- mip server默认监听8000和35730端口,如果端口冲突可在mip.config中修改启动端口,也可以使用mip server -f命令强制关闭当前占用端口的node进程(windows下无效)。
- 在mip-extensions仓库中创建新的组件
- 在mip-extensions目录中创建组件:mip addelement mip-alert
- 开发组件mip-alert.js用于定义组件,mip-alert.less用于定义组件样式,README.md用于说明组件用法,package.json用于记录组件版本及开发者信息
- 预览调试组件
- 在mip-extensions目录下启动mip server来预览组件,预览页面访问的是README.md文件中的示例。如果代码已经提交到mip-extensions-platform中,需要将组件文件夹复制到mip-extension中预览
- 打开调试网页http://127.0.0.1:8000/会列出当前仓库中的组件,点击进入mip-alert组件预览
- 如果页面不能预览,将mip-extensions文件夹下的mip.config文件删除
- 预览mip-extension-platform中的组件,需要将组件文件夹复制到mip-extension仓库中,在mip-extension文件夹内使用mip server预览
- 在MIP页引用自己编写的MIP组件
- 修改mip.config:进入mip-project/html文件夹下,修改mip.config文件的字段extensionsDir为../mip-extensions
- 在html目录下创建mip-alert.html文件,并添加mip-alert组件:mip add mip-alert.html mip-alert;在body中引入<mip-alert alert-text='我是alert内容'>点击触发alert</mip-alert>
- 在html目录下启动mip server:访问http://127.0.0.1:8000进入mip-alert.html页面
- 组件提交到github仓库时需要进行校验:mip validateelement mip-demo,通过校验后提交到仓库,等待审核。
- 使用百度账号登录组件平台;
- mip组件编写和测试,然后从组件平台上传组件,需要改下README.md中所需脚本的地址为https://mipcache.bdstatic.com/extensions/platform/v1/mip-__/mip-__.js,注意地址需要包含‘platform’,eg:
- 点击上传组件按钮,上传MIP组件zip压缩包。组件通过校验后可以提交审核。
- 组件审核会在一个工作日内,提交审核后组件会被锁定,不能再上传或者修改。只有等待管理员通过审核或者打回后才能继续修改。
- 组件上线后在本地可以引入上线后的组件进行验证。
- 如果修改已经上线的组件,在修改代码后,还需要修改package.json文件中的版本号,然后再次提交即可。
- AMP是一个开源性项目,MIP是这个开源项目的参与者
- MIP维持AMP的目标,MIP在中国国内有一些特殊情况的考虑,所以做了单独的实现。
- 一个站长开发了MIP如何迁移到AMP?目前MIP某些组件无法实现百分百功能转换。
- MIP-Cache已经对部分AMP页面做了支持。
- 百度同时支持AMP和MIP的索引和打开
- 开发MIP后,搜索流量是导流到MIP还是原页面?
- 导流到MIP页面,需要在MIP页面中做好和原页面的对应关系
- MIP移动网页加速器做了之后是只针对移动百度展示还是说对我们其他的正常用户一样显示?
- MIP页面是可以独立运行的,可以在浏览器中通过url直接访问,不依赖百度结果页。由于MIP页速度较快,体验更优,会在百度移动结果页有更高的权重。
- 搜索结果打开的是百度域名,用户分享是否也是百度链接?使用百度域名是否不利于网站的品牌传播同时也会影响流量统计,如何解决?
- 如果用户通过组件分享,分享的标题、图片和内容都是原页面的内容,具体分享内容可以在使用组件时定义。不会影响流量和品牌传播。如果用户直接从浏览器复制链接分享,那么被分享的页面是MIP Shell链接(MIP页面链接),url中能看出原页面的URL。统计代码再页面加载完成后都会生效,不会受到分享影响。
- 搜索结果打开的是百度域名,是否影响广告计费?
- 从搜索结果点出的MIP页面,页面上的任何内容(包括但不限于广告、在线咨询、统计等组件)均视为在原站点上投放和使用。
MIP页面效果精选
了解MIP(Mobile Instant Pages)的更多相关文章
- MIP 移动网页加速器视频教程全新发布
MIP (Mobile Instant Pages - 移动网页加速器) 是百度推出的开源项目,用于移动端页面加速.MIP 技术通过优化浏览器资源加载,前端代码执行及 CDN 缓存加速来加速页面,打造 ...
- 百度MIP移动页面加速——不只是CDN
MIP是用CDN做加速的么?准确答案是:是,但不只是. MIP全称Mobile Instant Pages,移动网页加速器,是百度提出的页面加速解决方案.MIP从前端渲染和页面网络传输两方面进行优化, ...
- 百度将与W3C中国召开MIP技术研讨会
百度计划与W3C中国共同组织国内W3C会员,于8月30日召开MIP 技术研讨会,讨论 MIP 等技术相关的应用标准,以期推进 MIP/AMP 在W3C中国的标准化进程. MIP (Mobile Ins ...
- MIP (百度移动网页加速器)
前言:第一次用移动网页加速器,感觉好心情都被弄坏了.确实性能提高了不少,但是限制js,对于一些交互实现都成问题.MIP是Mobile Instant Pages的缩写,指百度移动网页加速器, 是一套应 ...
- 百度站长平台MIP
使用说明 MIP(Mobile Instant Pages - 移动网页加速器),是一套应用于移动网页的开放性技术标准.通过提供 MIP-HTML 规范.MIP-JS 运行环境以及 MIP-Cache ...
- MIP 内容声明
从搜索结果页点出的 MIP 页面,其页面上的任何内容(包括但不限于广告.在线咨询.统计等组件)均视为在原站点上的投放和使用. MIP (Mobile Instant Pages - 移动网页加速器), ...
- MIP是什么
MIP (Mobile Instant Pages - 移动网页加速器), 是一套应用于移动网页的开放性技术标准.通过提供MIP-HTML规范.MIP-JS运行环境以及MIP-Cache页面缓存系统, ...
- 1145.cn 百度MIP适配实例
MIP,全称Mobile Instant Pages(移动端即时页面),是百度推出的一套移动端网页开放技术标准.网站移动端页面统计MIP改造,能实现页面缓存,从而达到移动网页加速效果. 百度官方已经明 ...
- 谷歌AMP和百度MIP是什么鬼?
首先我们来看定义: 谷歌AMP(Accelerated Mobile Pages,加速移动页面)是Google推出的一种为静态内容构建 web 页面,提供可靠和快速的渲染,加快页面加载的时间,特别是在 ...
随机推荐
- Extracting and composing robust features with denosing autoencoders 论文
这是一篇发表于2008年初的论文. 文章主要讲了利用 denosing autoencoder来学习 robust的中间特征..进上步,说明,利用这个方法,可以初始化神经网络的权值..这就相当于一种非 ...
- Jquery实用代码片段(转)
1.把所有带有#的空链接换成不友情的链接 $('a[href="#"]').each(function() { $(this).attr('href', 'javascript:v ...
- php -- 取日期
1.获取当前时间方法date()很简单,这就是获取时间的方法, 格式为:date($format, $timestamp), format为格式 - 必需 timestamp为时间戳–可填参数. 比如 ...
- QListView的子项的ViewMode
QListView.setViewMode(ViewMode mode) enum QListView::ViewMode Constant Value DescriptionQListV ...
- ImportError: No module named Crypto.Cipher
from Crypto.Cipher import AES 报错: ImportError: No module named Crypto.Cipher 解决方法: pip install pycry ...
- php多语言截取字符串函数
<?php header("Content-Type:text/html;charset=utf-8"); function msubstr($str, $start = 0 ...
- WordCount 远程集群源码
package test; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop ...
- UGUI 的多分辨率适配
1.Canvas的属性配置 2.Canvas Scaler的属性配置 3.根据不同的屏幕的比例动态修改缩放基准 void Start () { float standard_width = 960f; ...
- [转]wcout输出中文却不显示出来
准备使用UNICODE来写个控制台测试程序发现,cout无法输出UNICODE的中文字符.查找C++标准看到,其提供了wcin.wcout.wcerr.wclog用于处理wchar_t字符的输入输出. ...
- linux系统中,tee命令的使用
需求描述: 今天在看nginx内容的过程,遇到了tee这个命令,所以查询了下,在这里记录下使用方法. 操作过程: 1.执行以下的命令 [root@testvm ~]# uname -n | tee h ...