首先要知道什么是AMP以至于为什么要选择AMP?

AMP他并不是一门新技术,他只是一种能够让页面更快打开的一种办法。之所以用他是因为AMP能够带来SEO排名优化。另外Google搜索结果对AMP页面有预加载处理,能让用户更快地达到我们的定向页面。

AMP项目开发

AMP项目开发和普通站点开发几乎是一样的,但为了最大限度提升性能,AMP项目页面应该注意几点譬如:

1、为了避免JavaScript 延缓页面渲染,AMP页面不能包含自己编写的Javascript。

2、css都必须内联,以减少HTTP请求,并且有50KB的大小限制。

3、AMP页面允许第三方Javascript,但仅限在沙盒环境下的iframe中。

4、几乎可以使用所有原生的HTML标签,但对img等会产生外部资源依赖的标签,只能使用amp-img自定义标签。

基于这些页面上所有的交互逻辑都必须通过css实现,无法依赖JS,这样的话对于实现比较复杂的交互时AMP就不太优秀了,其实这也是和AMP原则相一致的,JS虽然丰富了页面同时也是页面优化噩梦的开始。当开发完成后必须保证页面是符合AMP规范的,只有符合AMP规范的页面才能被搜索引擎收录。(在Chrome中安装AMP Validator插件,当页面是符合AMP规范的时候右上角的插件按钮会变绿)页面通过验证以后,我们还需要在link配置中amphtml和canonical,让Google搜索发现我们的页面。

如果同有两个页面一个AMP版本的一个非AMP版本的,

那就为非AMP页面添加标记

<link rel = " amphtml " href = " https:// www.example.com/url/to/amp/document.html">

为AMP页面添加

<link rel = " canonical" href="https://www.example.com/url/to/full/document.html">

如果是只有一个版本的网页并且该版本是AMP网页,这样依然需要给他添加规范链接,这个时候会指向它自身。

<link rel ="canonical" href = "https://www.example.com/url/to/amp/document.html">

现在AMP页面开发工作基本完成可以发布了。

可能会出的问题:

1、AMP对表达式有限制,超过50控制台会报错,解决=> 对于这个问题除非AMP放开复杂度限制,否则我们能做的只能是尽量提前运算,当需要某个计算结果的时候可以直接使用,要尽量简化交互,减少参数。这个问题在使用的时候一般都会遇到。

2、AMP限制编写Javascript,不允许读写Cookie、localStorage,但很多时候我们需要用,我们的解决方法是=>通过http set - cookie 方式解决前端无法记录cookie的问题。

3、amp-form只能提交ajax post请求,无法做到post表单形式跳转。所以在开发过程中尽量避免出现post表单形式的请求,一般改用ajax post加页面跳转的形式来提交,在迫不得已的情况下可以考虑通过增加非amp的中间路由,在中间页中构造表单并自动提交数据。

4、AMP CROS:用户最终访问的是AMP Cache,如果页面上有额外的异步请求,就会有跨域限制,所以我们要在服务端开启跨域,返回头设置AMP-Access-Control-Allow-Source-Origin.

5、amp-iframe有sandbox属性,用来指定iframe内部的站点权限,默认值为空,如果希望iframe内部可以执行js脚本,则需要设置成“allow-scripts”;如果需要添加内部发送同域请求的权限,则需要设置成“allow-scripts allow-same-origin”,如果amp-iframe的src是同域站点,那么sandbox属性必须不能包含allow-same-origin,这样做杜绝了脱离amp控件发送请求的可能性。

6、AMP下统计页面埋点必须是基于amp自带的统计控件,目前amp封装了市面上大部分第三方统计系统,一般公司内部统计工具没有amp对应的控件,这个要评估统计工具。

& Google前沿的AMP技术的更多相关文章

  1. [转载] Google数据中心网络技术漫谈

    原文: http://www.sdnlab.com/12700.html?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd ...

  2. 漫谈 Google 的 Native Client 技术(一)---- 历史动力篇(Web 本地计算发展史)

    转自:http://hzx5.blog.163.com/blog/static/40744388201172522313463/ 漫谈 Google 的 Native Client 技术(一)---- ...

  3. google开发新人入职100天,聊聊自己的经验&教训 个人对编程和开发的理解 技术发展路线

    新人入职100天,聊聊自己的经验&教训 这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟. 对如何提问的一点见解. 对Google开发流程的吐槽. 如果 ...

  4. 漫谈 Google 的 Native Client(NaCl) 技术(二)---- 技术篇(兼谈 LLVM)

    转自:http://hzx5.blog.163.com/blog/static/40744388201172531637729/ 漫谈 Google 的 Native Client(NaCl) 技术( ...

  5. Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么(转)

    Web 建站技术中,HTML.HTML5.XHTML.CSS.SQL.JavaScript.PHP.ASP.NET.Web Services 是什么?修改 建站有很多技术,如 HTML.HTML5.X ...

  6. 腾讯QQ空间超分辨率技术TSR

    腾讯QQ空间超分辨率技术TSR:为用户节省3/4流量,处理效果和速度超谷歌RAISR 雷锋网AI科技评论: 随着移动端屏幕分辨率越来越高,甚至像iPhone更有所谓的“视网膜屏”,人们对高清图片的诉求 ...

  7. google的云盘与公司网盘

    很多人都很期待Google推出的云存储服务,也就是公司网盘.因为多数人相信,没有比google更适合做云存储的公司了,作为一个标准的Web公司或者说互联网公司,云端理所应当的优秀.但比起几年前听传言时 ...

  8. Google 云计算中的 GFS 体系结构

          google 公司的很多业务具有数据量巨大的特点,为此,google 公司研发了云计算技术.google 云计 算结构中的 google 文件系统是其云计算技术中的三大法宝之一.本文主要介 ...

  9. Linux 容器技术史话:从 chroot 到未来

    Linux 容器是一个在单一 Linux 主机上提供多个隔离的 Linux 环境的操作系统级虚拟技术.不像虚拟机(VM),容器并不需要运行专用的访客(guest)操作系统.容器们共享宿主机的(host ...

随机推荐

  1. redis-py中的坑

    今天发现,使用redis-py从redis中获取的数据竟然是加密的. conn = redis.Redis(host='redis_serverip', port=6379, password='re ...

  2. L - A Heap of Heaps CodeForces - 538F 主席树

    L - A Heap of Heaps CodeForces - 538F 这个是一个还比较裸的静态主席树. 这个题目的意思是把这个数组变成k叉树,然后问构成的树的子树小于等于它的父节点的对数有多少. ...

  3. E. A Simple Task

    E. A Simple Task 这个题目的意思是 给你一个由小写字母组成的字符串,有两种操作 i j k 如果k==1 那么就是就把i 到 j 的这个区间非递减排序. i j k如果k==2 那么就 ...

  4. JAVA设计模式之桥接模式(bridge)

    桥接模式: 分离抽象与具体实现,让他们可以独自发展,防止类爆炸 场景: 过年走亲戚是我们中国人传统的习俗,走亲戚那就少不了要买东西(苹果,牛奶等等),这些具体的东西就是具体的类 蒙牛牛奶,有机苹果,有 ...

  5. spring学习笔记(四)我对spring中bean生命周期的理解

    我相信大部分同学对spring中bean的生命周期都不陌生,但是如果要详细的说出每一个步骤,可能能说出来的也不多,我之前也是这样,前几天调了一下spring的源码,看了一点书,突然一下明朗了,理解了s ...

  6. Coursera课程笔记----计算导论与C语言基础----Week 6

    理性认识C程序 导论(Week 6) 明确学习进度 讲课内容 感性➡️理性➡️函数➡️指针等 作业练习 初级阶段 ➡️正常作业练习 C语言的由来 程序设计语言的分类 低级语言之机器语言 0010101 ...

  7. mongodb windows 集群搭建

    准备三台机器,系统:windows 8 192.168.1.1 192.168.1.2 192.168.1.3 每台机器上安装mongodb 服务,步骤: 下载以下文件并依次执行安装 clearcom ...

  8. 编译nginx的时候报错 需要安装PCRE

    ./configure --prefix=/mynginx/ 本地编译nginx的时候 报错 提示需要安装PCRE 错误信息: ./configure: error: the HTTP rewrite ...

  9. dede文章列表根据权重自定义排序

    首先在这里说明一下,网上搜索织梦文章列表自定义的方式无非有以下几种: 1.修改配置文件,新增一个orderid字段,想法很好,但是!但是!!!可能是早期版本的缘故,不适合现在的v5.7系统!按照网上说 ...

  10. .Net Core3.0 WebApi 项目框架搭建 四:JWT权限验证

    .Net Core3.0 WebApi 项目框架搭建:目录 什么是JWT 根据维基百科定义,JWT(读作 [/dʒɒt/]),即JSON Web Tokens,是一种基于JSON的.用于在网络上声明某 ...