前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AMP改造教程,浅谈AMP接入解决方案!

AMP改造教程,浅谈AMP接入解决方案!

作者头像
QUXINGDONG.COM
发布于 2018-11-01 09:01:14
发布于 2018-11-01 09:01:14
4.2K00
代码可运行
举报
文章被收录于专栏:厦门SEO厦门SEO
运行总次数:0
代码可运行

图片转载于——厦门SEO:seo.quxingdong.com

Ps:一、二主要解释一些专有名词,具体“ AMP 开发规范 ”可以直接参阅第三专题!


《 AMP 开发文档 》

一、框架组成:

谷歌AMP - HTML框架由 AMP HTMLAMP JSAMP Cache 三大核心组件构成!

1.AMP HTML

AMP HTML 是为了 确保网页性能 的 具有 某些限制 的 HTML。

AMP HTML 本质上是使用自定义 AMP属性扩展 的 HTML。

尽管 AMP HTML 网页中的大多数标记都是常规 HTML 标记,但部分 HTML 标记替换为了 AMP 专用标记(另请参阅 AMP 规范中的 HTML 标记)。利用这些自定义元素(称为 AMP HTML 组件)可以轻松高效地实现常见的模式。

例如,amp-img 标记可提供完整的 srcset 支持,即使在尚不支持该标记的浏览器中也是如此。

2.AMP JS

AMP JS 库可确保快速渲染 AMP HTML 网页。

AMP JS 库 可实现所有 AMP 的最佳性能做法、管理资源加载,并为您提供上面提到的自定义标记,所有这些都是为了确保快速渲染您的网页。

最重大的优化之一就是它可使来自外部资源的所有内容保持异步,让网页中的任何内容都能毫无阻碍地渲染。

其他性能技术还包括:将所有 iframe 沙盒化,加载资源之前对网页上每个元素的布局进行预先计算,以及禁用性能缓慢的 CSS 选择器。

3.AMP Cache

Google AMP Cache 可用于提供缓存的 AMP HTML 网页。

Google AMP Cache 是一种基于代理的内容交付网络,用于交付所有有效的 AMP 文档。它可提取 AMP HTML 网页,对这些网页进行缓存,并自动改进网页性能。使用 Google AMP Cache 时,文档,所有 JS 文件及所有图片都从使用 HTTP 2.0 的同一来源加载,从而可实现最高效率。

此外,Google AMP Cache 还带有内置验证系统,可确认网页能够正常工作,并且不依赖于外部资源。此验证系统运行一系列断言,确认网页的标记符合 AMP HTML 规范。

Google AMP Cache 可以理解为谷歌官方提供的免费CDN服务。


二、运作原理:

01.仅允许异步脚本

02.静态确定所有资源的大小

03.不让扩展机制阻塞渲染

04.将所有第三方 JavaScript 保存在非关键路径下

05.有 CSS 都必须内嵌并具有大小限值

06.字体触发必须高效

07.最大程度减少样式重新计算次数

08.仅运行 GPU 加速动画

09.设定资源加载的优先级

10.瞬时加载页面


三、开发规范:

1.AMP页面源码 必须包含的标记

  • 必须以“<!doctype html>”开始!
  • 必须包含顶级标签:“<html ⚡>”,使用“<html amp>”也可以!
  • 必须包含“<head>”和“<body>”标签!
  • 必须包含“<meta charset="utf-8">”标签,且作为其头标记的第一个子标记!
  • 必须包含“<meta name="viewport" content="width=device-width,minimum-scale=1">”!
  • 必须包含“<link rel="canonical" href="当前AMP页面对应的源站页面链接">”标签!
  • 必须包含“<script async src="https://cdn.ampproject.org/v0.js"></script>”标签!
  • 必须包含AMP样板代码(head > style[amp-boilerplate]和noscript > style[amp-boilerplate]):
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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>

以上八个“必须”必须严格遵守!

2.AMP HTML 规范

01.HTML 标签

  • 禁止添加“<script>”内嵌脚本,除非“type”属性是“application/ld+json”。
  • 可以使用“<noscript>”。
  • 禁止使用“<base>”标签。
  • <img>标签替换为了“<amp-img>”,且要有结束标记:“</amp-img>”。
  • video替换为:<amp-video>. audio替换为:<amp-audio>. iframe替换为:<amp-iframe>。
  • frame frameset object param applet embed 这些标签都禁止使用。
  • <form>标签允许使用,需要包括amp-form扩展名。
  • <button>允许使用。
  • <a>标签的href属性不能以“JavaScript:”开始!如果设置,则target属性值必须为_blank。
  • <input[type=image]>,<input[type=button]>,<input[type=password]>,<input[type=file]>是无效的。相关标签<fieldset>,<label>是允许的。

02.HTML 注释

不允许使用有条件的HTML注释!例如IE8兼容注释代码。

03.HTML 属性

在AMP HTML中不允许以on(例如onclick或onmouseover)开头的属性名称。on允许使用带有文字名称(无后缀)的属性。

AMP HTML中不允许使用与XML相关的属性,例如xmlns,xml:lang,xml:base和xml:space。

i-amp-AMP HTML中不允许使用前缀的内部AMP属性。

3.使 AMP网页 可被 Google搜索 轻松发现

为网站适配了AMP版本,如何使谷歌搜索引擎知道呢?

为成功接入AMP框架的网站页面添加:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<link rel="canonical" href="当前AMP页面对应的源站页面链接">

为原来的网站页面添加:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<link rel="amphtml" href="当前源站页面对应的AMP页面链接">


四、相关工具:

AMP 开发者指南:https://developers.google.com/search/docs/guides/about-amp

AMP HTML 规范:https://www.ampproject.org/zh_cn/docs/fundamentals/spec

AMP 验证工具:https://validator.ampproject.org

AMP 常见错误:https://www.ampproject.org/zh_cn/docs/troubleshooting/validation_errors

补充:

HTML转AMP:https://www.ampproject.org/zh_cn/docs/fundamentals/converting/setting-up

以上文档、工具使用 需要访问外国网站 !

Ps:本文转载于“厦门SEO”文章:《AMP 开发文档【精炼核心规范 新手易懂】

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
C++入门篇
呀哈喽,我是结衣。 了解完C++的发展历程,我们当然也要会用C++啊。今天这篇博客就是来帮助我们来入门C++的,当然要入门C++当然也要先学会C语言啦。在我学习C++的过程中我会一直把C++博客更新下去的。
Yui_
2024/10/15
1300
C++入门篇
从基础入门到学穿C++(C++语法基础篇)【超详细】【一站式速通】
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。
see.
2024/06/04
9270
【C++入门篇】学习C++就看这篇--->命名空间、缺省参数及函数重载
C++总计63个关键字,C语言32个关键字,其实不用记忆,后面随着我们日积月累自然而然就记住了。如下所示:
HABuo
2025/05/15
1180
【C++入门篇】学习C++就看这篇--->命名空间、缺省参数及函数重载
【C++】——入门基础知识超详解
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
小李很执着
2024/06/15
2140
【C++】——入门基础知识超详解
C++初阶-入门基础语法
2. 使用C++输入输出更方便,不需增加数据格式控制,比如:整形--%d,字符--%c
用户9645905
2022/11/30
7750
C++初阶-入门基础语法
【C++】C++入门
C语言是结构化和模块化的语言,适合处理小规模的程序,对于复杂的问题、规模较大的程序,需要高度的抽象和建模时,C语言则不合适,这时出现了面向对象的思想,支持面向对象的程序设计语言应运而生
s-little-monster
2024/06/25
3770
【C++】C++入门
C++入门知识(一)
一、#命名空间 在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的。 1.命名空间的定义 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。
海盗船长
2020/08/27
3870
C屁屁(c++)万字入门
        C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机 界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言 应运而生。         1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一 种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而 产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的 程序设计,还可以进行面向对象的程序设计
比特大冒险
2023/04/16
6230
C屁屁(c++)万字入门
初识C++ · 入门(1)
C++与C语言是有一定交集的,可以理解为本贾尼在使用C语言的时候认为有缺陷,于是加了一些小语法进行改良,后来经过委员会的修改,C++98问世了,是第一部标准版本。
_lazy
2024/10/16
740
初识C++ · 入门(1)
从C语言过渡到C++
1979年,贝尔实验室Bjarne Stroustrup 在C语言的基础上,设计开发出了C++语言。C++语言是对C语言的扩充和完善,最初被命名为 “带类的C",1983年更名 “C++”。
秋邱
2024/10/09
1780
[C++]C++基础知识概述
  C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适,为了解决软件危机,20世纪80年代,计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。
IT编程爱好者
2023/04/12
1K0
[C++]C++基础知识概述
【C++入门篇】保姆级教程篇【上】
说到C++大家总会想到C语言,毕竟C++也就是C plus plus 么,没有错,C++在语法上是兼容C语言的。我们C++的祖师爷本贾尼·斯特劳斯特卢普在写C程序的时候对于C的一些语法规则感到不合适,于是祖师爷在C的基础上开发了这样一门语言。今天,我们就要开启C++世界的大门了。
用户11029129
2024/06/04
1840
【C++入门篇】保姆级教程篇【上】
【C++】C++基础语法
     当我们协同完成一个项目时,你定义的变量会不会与其他人定义的变量名冲突???
The sky
2023/04/12
1.5K0
【C++】C++基础语法
【C++入门】命名空间、缺省参数、函数重载
在正式进入C++之前,我们首先要对C++有一个基本的认知。这里我就不过多的进行描述了,有兴趣的可以去网络搜索一番。总而言之,从名称上面我们也可以看得出来,C++是在C的基础上进行不断地优化发展。事实上确实是这样,C语言中90%以上的语法在C++中都适用。
诺诺的包包
2023/02/20
7720
C语言和C++的区别是什么?8个点通俗易懂的告诉你
有些初学的同学傻傻分不清其中的区别,下面我将详细的讲解C语言和C++的区别点。帮助大家尽快的理解。
诸葛青云
2019/04/26
2.6K0
C语言和C++的区别是什么?8个点通俗易懂的告诉你
C++打怪升级(一)- 命名空间、缺省形参、重载
C++相比C语言(32个)引入了更多的(63个)关键字,这一点也可以管中窥豹看出一点C++的复杂。
怠惰的未禾
2023/04/27
9680
C++打怪升级(一)- 命名空间、缺省形参、重载
【C++阅览室】C++入门之过渡C语言
定义命名空间,需要使用到 namespace 关键字 ,后面跟 命名空间的名字 ,然 后接一对 {} 即可, {}
小文要打代码
2024/10/16
800
【C++阅览室】C++入门之过渡C语言
【c++入门】命名空间,缺省参数与函数重载
C++是一种与C语言紧密相关的编程语言。尽管它继承了C语言的许多特点,但C++引入了面向对象编程等概念,并增加了一些自己的特性和关键字来支持这些特性。比较C++和C语言的关键字,我们可以发现以下特征:
用户11029103
2024/03/24
3420
【c++入门】命名空间,缺省参数与函数重载
C++前期概念(重)
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
ljw695
2024/10/18
1300
C++前期概念(重)
C++入门篇1
C++是在C语言的基础上,又容纳了许多面向对象的编程思想,并增加了许多有用的库,以及编程范式,如果以及学习C语言后,对C++的学习也是很有帮助的。 C++补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的,比如:作用域方面,IO方面,函数方面,指针方面,宏方面
Yui_
2024/10/16
1020
C++入门篇1
推荐阅读
相关推荐
C++入门篇
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 一、框架组成:
    • 1.AMP HTML
    • 2.AMP JS
    • 3.AMP Cache
  • 二、运作原理:
    • 01.仅允许异步脚本
    • 02.静态确定所有资源的大小
    • 03.不让扩展机制阻塞渲染
    • 04.将所有第三方 JavaScript 保存在非关键路径下
    • 05.有 CSS 都必须内嵌并具有大小限值
    • 06.字体触发必须高效
    • 07.最大程度减少样式重新计算次数
    • 08.仅运行 GPU 加速动画
    • 09.设定资源加载的优先级
    • 10.瞬时加载页面
  • 三、开发规范:
    • 1.AMP页面源码 必须包含的标记
    • 2.AMP HTML 规范
      • 01.HTML 标签
      • 02.HTML 注释
      • 03.HTML 属性
    • 3.使 AMP网页 可被 Google搜索 轻松发现
  • 四、相关工具:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档