惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threat Research - Cisco Blogs
S
Securelist
H
Heimdal Security Blog
Scott Helme
Scott Helme
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
Spread Privacy
Spread Privacy
Cyberwarzone
Cyberwarzone
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
C
CERT Recently Published Vulnerability Notes
P
Proofpoint News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
人人都是产品经理
人人都是产品经理
C
Cisco Blogs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Engineering at Meta
Engineering at Meta
Project Zero
Project Zero
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
Cisco Talos Blog
Cisco Talos Blog
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
O
OpenAI News
P
Proofpoint News Feed
Google Online Security Blog
Google Online Security Blog
Recent Announcements
Recent Announcements
Hacker News: Ask HN
Hacker News: Ask HN
美团技术团队
Stack Overflow Blog
Stack Overflow Blog
U
Unit 42
P
Privacy International News Feed
Google DeepMind News
Google DeepMind News
G
GRAHAM CLULEY
Apple Machine Learning Research
Apple Machine Learning Research
TaoSecurity Blog
TaoSecurity Blog
S
Security @ Cisco Blogs
C
Check Point Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Jina AI
Jina AI
S
Secure Thoughts
G
Google Developers Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 最新话题
T
Tenable Blog
Latest news
Latest news
I
InfoQ

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活 翻译 – CSS Sprites:实用技术还是生厌之物? « 张鑫旭-鑫空间-鑫生活 纯CSS实现易拉罐3D滚动效果 « 张鑫旭-鑫空间-鑫生活 纯CSS实现侧边栏/分栏高度自动相等 « 张鑫旭-鑫空间-鑫生活 CSS+JavaScript实现页面不同布局的切换 « 张鑫旭-鑫空间-鑫生活 JavaScript实现最简单的拖拽效果 « 张鑫旭-鑫空间-鑫生活 自己写的无图片版jQuery zxxbox弹出框插件 « 张鑫旭-鑫空间-鑫生活 中国古代道家思想与网页重构的思考 « 张鑫旭-鑫空间-鑫生活 让所有浏览器支持HTML5 video视频标签 « 张鑫旭-鑫空间-鑫生活 纯CSS实现各类气球泡泡对话框效果 « 张鑫旭-鑫空间-鑫生活 JS HEX十六进制与RGB, HSL颜色的相互转换 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变、高光等文字效果 « 张鑫旭-鑫空间-鑫生活 去除冗余 – 精简您的CSS样式代码 « 张鑫旭-鑫空间-鑫生活 对overflow与zoom”清除浮动”的一些认识 « 张鑫旭-鑫空间-鑫生活 jQuery Pagination Ajax分页插件中文详解 « 张鑫旭-鑫空间-鑫生活 absolute绝对定位的非绝对定位用法 « 张鑫旭-鑫空间-鑫生活 网页布局思想浅议-淘宝新版首页为实例 « 张鑫旭-鑫空间-鑫生活 回流与重绘:CSS性能让JavaScript变慢? « 张鑫旭-鑫空间-鑫生活 CSS float浮动的深入研究、详解及拓展(二) « 张鑫旭-鑫空间-鑫生活 CSS float浮动的深入研究、详解及拓展(一) « 张鑫旭-鑫空间-鑫生活 60个极富创造性的震撼的电影海报设计 « 张鑫旭-鑫空间-鑫生活 jQuery Lightbox(balupton版)图片展示插件讲解 « 张鑫旭-鑫空间-鑫生活 博客内嵌flash音乐播放器代码、下载与使用 « 张鑫旭-鑫空间-鑫生活 CSS3 animate实现图片墙3D翻转效果 « 张鑫旭-鑫空间-鑫生活 图片旋转效果的一些研究、jQuery插件及实例 « 张鑫旭-鑫空间-鑫生活 CSS3 border-image详解、应用及jQuery插件 « 张鑫旭-鑫空间-鑫生活 jQuery-两款不同原理的圆角插件讲解 « 张鑫旭-鑫空间-鑫生活 页面可用性之outline轮廓外框的一些研究 « 张鑫旭-鑫空间-鑫生活 CSS3 transition实现超酷图片墙动画效果 « 张鑫旭-鑫空间-鑫生活 HTML CSS列表元素ul,ol,dl的研究与应用 « 张鑫旭-鑫空间-鑫生活 jQuery图片文本滚动切换插件jCarousel中文翻译与详解 « 张鑫旭-鑫空间-鑫生活 酷酷的jQuery鼠标悬停图片放大切换显示效果 « 张鑫旭-鑫空间-鑫生活 IE6下z-index犯癫不起作用bug的初步研究 « 张鑫旭-鑫空间-鑫生活 checkbox复选框的一些深入研究与理解 « 张鑫旭-鑫空间-鑫生活 jQuery之使用slideToggle实现垂直下拉菜单 « 张鑫旭-鑫空间-鑫生活 jQuery-innerfade内部列表自动淡入淡出插件 « 张鑫旭-鑫空间-鑫生活 jQuery-火焰灯效果导航菜单 « 张鑫旭-鑫空间-鑫生活 IE下css bug集合-翻译自haslayout.net « 张鑫旭-鑫空间-鑫生活 翻译-IE7/8@font-face嵌入字体与文字平滑 « 张鑫旭-鑫空间-鑫生活 jQuery-马化腾产品设计与用户体验的一些技术实现 « 张鑫旭-鑫空间-鑫生活 像素的世界及其在web开发制作中的应用 « 张鑫旭-鑫空间-鑫生活 css行高line-height的一些深入理解及应用 « 张鑫旭-鑫空间-鑫生活 CSS实现圆角六色渐变自适应按钮详解 « 张鑫旭-鑫空间-鑫生活 我熟知的三种三栏网页宽度自适应布局方法 « 张鑫旭-鑫空间-鑫生活 jQuery照片图像剪裁插件Jcrop中文翻译详解 « 张鑫旭-鑫空间-鑫生活 Ajax Upload多文件上传插件翻译及中文演示 « 张鑫旭-鑫空间-鑫生活 告别图片—使用字符实现兼容性的圆角尖角效果beta版 « 张鑫旭-鑫空间-鑫生活 大小不固定的图片、多行文字的水平垂直居中 « 张鑫旭-鑫空间-鑫生活 jQuery boxy弹出层对话框插件中文演示及讲解 « 张鑫旭-鑫空间-鑫生活 JavaScript实现新浪微博文字放大显示动画效果 « 张鑫旭-鑫空间-鑫生活 翻译:让网络更快一些——最小化浏览器中的回流(reflow) « 张鑫旭-鑫空间-鑫生活 jQuery之addClasas与removeClass使用实例 « 张鑫旭-鑫空间-鑫生活 关于Google圆角高光高宽自适应按钮及其拓展 « 张鑫旭-鑫空间-鑫生活 JavaScript实现图片幻灯片滚动播放动画效果 « 张鑫旭-鑫空间-鑫生活 jQuery-鼠标经过显示大图并跟随鼠标效果插件 « 张鑫旭-鑫空间-鑫生活 关于gif图片(或png8)杂边锯齿的问题 « 张鑫旭-鑫空间-鑫生活 对html与body的一些研究与理解 « 张鑫旭-鑫空间-鑫生活 鲜为人知的一个解决兼容性问题的利器——小数 « 张鑫旭-鑫空间-鑫生活 搜狐白社会似iphone短信对话框效果的优化 « 张鑫旭-鑫空间-鑫生活 关于文字内容溢出用点点点(…)省略号表示 « 张鑫旭-鑫空间-鑫生活 jquery之append与insertBefore使用实例 « 张鑫旭-鑫空间-鑫生活 jQuery之图片关联伸缩效果 « 张鑫旭-鑫空间-鑫生活 jquery之图片左右切换动画效果 « 张鑫旭-鑫空间-鑫生活 jQuery之replace字符串替换实现不同尺寸图片切换 « 张鑫旭-鑫空间-鑫生活 jQuery-实现图片的放大镜显示效果 « 张鑫旭-鑫空间-鑫生活 jQuery-单击文字或图片内容放大显示效果插件 « 张鑫旭-鑫空间-鑫生活 reflection.js-实现图片投影倒影效果js插件 « 张鑫旭-鑫空间-鑫生活 jQuery-很酷的弹出层效果js插件 « 张鑫旭-鑫空间-鑫生活 复选框单选框与文字对齐问题的研究与解决 « 张鑫旭-鑫空间-鑫生活 css margin的相关属性,问题及应用 « 张鑫旭-鑫空间-鑫生活 IE6下png背景不透明问题的综合拓展 « 张鑫旭-鑫空间-鑫生活
移动页面加速google的AMP和百度的MIP简介 « 张鑫旭-鑫空间-鑫生活
张鑫旭,zhangxinxu · 2017-09-10 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from http://www.zhangxinxu.com/wordpress/?p=6404
本文可全文转载,但需得到原作者书面许可,同时保留原作者和出处,摘要引流则随意。

一、关于移动页面加速

google先出了个AMP – Accelerated Mobile Pages(加速的移动页面),后来百度仿照出了个MIP– Mobile Instant Pages – 移动网页加速器。

大致意思是说,你做网页呀,如果遵循我制定的一些规则,你的页面加载速度会更快,据吹会有15% ~ 85%的性能提升。

听上去好像很厉害,但是,这里的“遵循我制定的一些规则”可不是类似YSlow之类的性能优化建议,那可是真真实实伤筋动骨的修改,从成本权衡来讲,修改老页面是不靠谱的,需要重新整一套适配这些搜索引擎的页面。

我去,就为了提高一点虚幻的加载速度,就花这么多成本去重新搞一套页面,无论是对开发者还是企业而言,实在是下不了手啊,所以如果说单纯就是为了加速,无论是AMP还是MIP的推广和普必将遭受重大的阻碍,因为无需伤筋动骨就可以进行网页优化的手段很多,虽然优化效果没有使用AMP或MIP那么极致,但觉得性价比高很多。

然而,无论是AMP还是MIP,还有一个潜在的,并没有大肆宣扬的好处,那就是可以影响搜索引擎的排名(也就是SEO)。至于有多影响,并没有明说。但是以我本人不太专业的看法,原来你是在搜索引擎第二页的,使用了AMP或MIP后跑到第一页,绝对是没问题的。中国人最讲究面子,你如此看得起我,用我推出的技术,我不给你点好处,我自己良心也过不去呀,对不对?——加个闪电标志,有身份;排名提前,有好处。

嘿嘿,这下问题就搞大了,这搜索引擎的排名啊,那可是直接跟钱挂钩的呀,注意这里的“直接”;网站加载速度虽然也与钱挂钩,但这个它不直接,太隐蔽,所以上司啊老板啊都更看重网站的搜索引擎排名,而不是加载速度。

二、google的AMP和百度的MIP快速上手

google的AMP文档地址是:https://www.ampproject.org/docs/
百度的MIP文档地址是:https://www.mipengine.org/doc/00-mip-101.html

由于AMP和MIP干的是同样的事情,并且借鉴痕迹明显,因此两者实现的套路基本是一样的,例如拿快速创建一个AMP或MIP页面举例:

  1. 首先创建一个标准的HTML文件
    • <html>标签中增加mip标识
    • 编码为utf-8
    • 添加meta-viewport,用于移动端展现
    <!DOCTYPE html>
    <html mip>
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
            <title>Hello World</title>
        </head>
        <body>
            <h1>Hello World!</h1>        
        </body>
    </html>
    
  2. 添加运行环境
    在AMP中使用AMP需要的JS(外链),以及CSS(内联),在MIP中使用MIP需要的CSS和JS(都是外链)。

    然后文件放置的位置也有所区别如下,AMP的JS放置在头部,而MIP和传统规则一致,CSS放在头部,JS放在底部,HTML结构示意分别如下:

    <!DOCTYPE html>
    <html mip>
        <head>
            <meta 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">
            <title>Hello World</title>
        </head>
        <body>
            <h1>Hello World!</h1>
            <script src="https://mipcache.bdstatic.com/static/v1/mip.js"></script>  
        </body>
    </html>
    
    <!doctype html>
    <html amp lang="en">
      <head>
        <meta charset="utf-8">
        <script async src="https://cdn.ampproject.org/v0.js"></script>
        <title>Hello, AMPs</title>
        <link rel="canonical" href="http://example.ampproject.org/article-metadata.html">
        <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
        <script type="application/ld+json">
          {
            "@context": "http://schema.org",
            "@type": "NewsArticle",
            "headline": "Open-source framework for publishing content",
            "datePublished": "2015-10-07T12:02:41Z",
            "image": [
              "logo.jpg"
            ]
          }
        </script>
        <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
      </head>
      <body>
        <h1>Welcome to the mobile web</h1>
      </body>
    </html>
  3. 添加关联标签
    首先一样的是都需要在头部<head>引入关联标签:
    <link rel="canonical" href="$SOME_URL">

    这里的$SOME_URL指向的就是当前页面对应的普通页面地址,此时浏览器会继承原页面(移动端)的点击权重,同时加速页将作为搜索引擎的首选导流页面。

    百度的MIP还提供了这个:

    <link rel="miphtml" href="$MIP_URL">

    添加在普通页面的<head>标签中,用来告诉搜索引擎加速页面地址是哪一个。

    谷歌的则是:

    <link rel="amphtml" href="$AMP_URL">

    如果我们的加速页面没有原页面,则href需要指向当前页面地址。

  4. 添加样式

    在移动加速网页中,所有的自定义CSS全部建议内联,在MIP中使用mip-custom属性标识,在AMP中使用amp-custom标识,例如:

    <style mip-custom>
        h1 { color: red;}
    </style>
    <style amp-custom>
      /* any custom style goes here */
      body {
        background-color: white;
      }
      amp-img {
        background-color: gray;
        border: 1px solid black;
      }
    </style>
  5. 替换禁用的HTML标签
    在使用移动页面加速技术的时候,很多标签是不能使用的。例如<img><video><iframe>等都是不能使用的,需要使用其他标签替换或者直接禁止使用(如<iframe>),例如在MIP中,<img>标签需要替换成<mip-img>,在AMP中<img>标签需要替换成<amp-img>
    <mip-img layout="responsive" width="350" height="263" src="https://www.mipengine.org/static/img/mip_logo_3b722d7.png"></mip-img>
  6. 使用内置的组件
    出于对代码质量和性能的考虑,移动加速页面是中不允许自定义JavaScript代码的。如果有交互效果,必须使用JavaScript,则需要使用MIP或者AMP内置的组件。

    无论是谷歌的AMP还是百度的MIP,其组件都分为内置组件和扩展组件(个性化组件),所谓内置组件指的是不需要再引入额外JS的组件,而扩展组件需要再引入JS文件。

    MIP的组件文档参见这里,AMP的组件文档参见这里

    两者内置的组件都非常的多,具体到某个具体组件还是有一些差异的,比方说多图片轮播组件carousel在MIP中属于内置组件,但是在AMP中则是扩展组件,需要引入额外的JS:

    <script async custom-element="amp-carousel" src="https://cdn.ampproject.org/v0/amp-carousel-0.1.js"></script>
  7. 预览和验证
    无论是谷歌的AMP还是百度的MIP都提供了预览和验证功能,百度MIP是在线工具:


    校验代码,使用 MIP 校验工具
    预览线上 URL 异步打开效果,使用 MIP 预览工具

    谷歌AMP则是借助google chrome开发者工具:
    AMP的验证截图

以上几步流程就是演示的如果构建一个简单的移动加速页面。

更复杂以及更详尽的一些使用,可以自行参考官方文档,或者等一段时间,看看我能不能有一些实践经验分享。

三、建议优先支持百度的MIP

虽然谷歌的AMP和百度的MIP原理和思路类似,但毕竟代码上还存在很多差异,想要全部都支持,一种是借助工具,另外一种就是两套都开发。但是很显然如果两套都支持,那成本真的是相当高了。

所以对国内的用户和产品而言,我的建议是优先支持百度的MIP,因为毕竟在移动端使用谷歌进行搜索的人并不多,占比非常有限。在面对商业利益面前,所谓的爱恨情仇我们其实应该放在一边,更关注的是现实利益,所以如果想要进行移动网页加速支持,直接走MIP即可!

举个例子,拿分享组件而言,AMP分享的就是twitter,Facebook,组件也是YouTube之类的,对国内用户而言,价值真的是非常有限。而百度的MIP分享则本地化要更加友好。

四、网页移动加速原理

很多小伙伴想了解移动加速的原理。

加速主要在两方面:
1. 任何页面,你CSS内联,交互简单化,不使用渲染速度不快的HTML标签,都会变快的,与AMP或者MIP并没有直接关系;
2. 搜索引擎厂商的高性能CDN。我们审视下按照移动加速规则处理后的网页,基本上就是一个与开发人员和开发企业没有任何关系的页面,所有CSS内联,所有JS都使用AMP或者MIP提供的JS, 也就是说,无论是网页HTML还是JS全部都可以缓存在搜索引擎厂商的CDN上,相当于免费使用大厂的CDN。要知道使用CDN都是要收费的,使用了使用AMP或者MIP后,这部分钱可以省了。

以上就是加速原理。其实,和我们平常移动端网页优化规则是一致的,只是AMP和MIP进行的规则强约定。

五、结束语

无论是谷歌的AMP还是百度的MIP对我们网页的交互限制非常大,对于一些非常复杂的一面,想要原封不动的转换为移动加速页面,难度是非常高的,成本是非常大的。考虑到这种现实问题,我们实际的做法通常有两个方向:一是实现移动加速页面的时候调整原页面的交互设计为简单模式,例如普通的小说阅读页面支持上下左右滑屏加载阅读,如果变成AMP或者MIP页面,就只能变成点击下一章链接去加载,UI布局也需要简化,例如去除设定阅读纹理,白天黑夜模式之类的功能;另外一个是只对原本就比较简单的页面进行移动加速处理,例如博客文章,新闻内容,广告页面等。

对于并未广泛应用的新技术而言,我个人建议是先从一些简单的页面入手,通过数据验证,MIP加速确实能够明显增加公司的收益,再大规模应用在其他页面上,有助于规避成本风险。

好,以上就是本文的全部内容,感谢阅读,欢迎纠错!

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:http://www.zhangxinxu.com/wordpress/?p=6404

(本篇完)