移动网站建设是否有必要采用移动网页加速器-百度MIP
如果大家有使用百度站长工具,一定会发觉近来多了一个工具栏-移动专区目录加了一个-MIP引入。
什么是百度MIP?
MIP 英文全称Mobile Instant Page 即:移动网页加速器,是一套应用于移动网页的开放性技术标准。通过提供MIP-HTML规范、MIP-JS运行环境以及MIP-Cache页面缓存系统,实现移动网页加速。其是一项长期的开源计划。
百度MIP加速原理
主要通过规范页面结构,如不允许自定义JS、静态图片需要标明尺寸、控制外部资源的额加载来确保其高效性、封装交互功能、只允许用 transforms 和 opacity 来完成动画效果。最后就是百度将会把 MIP 网页缓存到百度 CDN 中。只要符合 MIP 标准,都可以使用 MIP 缓存。
百度MIP头部使用规范
起始标签使用
html 标签必须加上 mip 标记,即:
必须包含和标签
必须在 head 标签中包含字符集声明:,字符集统一为utf-8
必须在 head 标签中包含 viewport 设置标签:,推荐包含minimum-scale=1
必须在 head 标签中包含 < link rel="stylesheet" type="text/css" href="https://mipcache.bdstatic.com/static/v1/mip.css" >
必须在 body 标签中包含
必须在 head 标签中包含
从以上优加网络介绍,可知道百度MIP仅仅是针对移动网站,最重要的功能是页面加载速度快,百度会将页面缓存,而且对收录和排名都有很大作用。但其最大的缺点就是不适合复杂站点,只适合资讯类移动站点。
很多客户会问:
响应式网站可以用百度MIP吗?
答案是否定的,因为响应式网站包括PC端、PAD端、移动端。百度MIP只适合用移动端。
我的网站有比较多的交互效果,可以用百度MIP吗?
答案也是否定的,百度MIP只适合静态类资讯站点,太多交互效果的网站不适合
百度MIP可以加载视频吗?
答案是可以的,百度MIP有mip-video视频组件,可以加载视频。
百度MIP是免费使用的吗?
答案是肯定的,目前是鼓励大家用。
其他浏览器都兼容百度MIP吗?
百度自己肯定不用说了,听人反应过UC以前不兼容,是因为误把某些标签当成广告过滤了,最新版本的UC浏览器已兼容,正常浏览器应该都是兼容的。
开发成本高吗?
根据优加网络了解,如果是没使用过的网站开发者,需要花半个月左右的时间深入了解,目前来看,会用的开发者并不是很多,应该还在普及阶段,所以开始开发成本会比较高,然后慢慢降低。
除了网站加载速度快、百度排名优先外,还有没有其他优势?
如果不出所料,百度会开发越来越多的组件,目前已上线图片预览,视频播放,分享组件等,使用这些组件可以更好的保证用户体验、减少兼容性问题。
优加网络建议,如果是移动类的资讯站点,完全可以考虑使用百度MIP,毕竟速度快、排名好,这是非常重要的两项。
优加网络专注于网站定制开发,欢迎广大客户咨询400-800-9385
使用百度MIP遇到最大的问题应该是后台编辑器编辑的内容如何转换成MIP可识别的内容
如图片标签变化,img标签变为mip-img、不允许用内联样式style、视频标签变化等。
目前来看,并没有专门针对百度MIP开发的后台编辑器,所以只能用程序替换的方法了。
function replacePicUrl($content = null, $url="") {
$pattern="/<img.*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.jpeg]|\.png]|\.bmp]))[\'|\"].*?[\/]?>/";
preg_match_all($pattern, $content,$matches);
$full_img = $matches[0];
$full_src = $matches[1];
foreach ($full_img as $k => $v) {
$v1 = str_replace("<img", "<mip-img", $v);
$v1 = str_replace("/>", "></mip-img>", $v1);
$new_path = $url.$full_src[$k];
$v1 = str_replace($full_src[$k], $new_path, $v1);
$content = str_replace($v, $v1, $content);
}
return $content;
}
提取style:
function getStyle($content = null){
preg_match_all("/style=('|\")([^'\"]+)('|\")/",$content,$matches);
$styles = $matches[0];
$styles_value = $matches[2];
$style_custom = "";
$i = 0;
foreach($styles_value as $key){
$style_custom .= ".class".$i."{".$key."}";
$class_name = 'class="class'.$i.'"';
$replacements = $class_name;
$patterns = $styles[$i];
$content = str_replace($patterns, $replacements, $content);
$i++;
}
$res['style_custom'] = $style_custom;
$res['content'] = $content;
return $res;
}