& Google前沿的AMP技术
首先要知道什么是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技术的更多相关文章
- [转载] Google数据中心网络技术漫谈
原文: http://www.sdnlab.com/12700.html?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd ...
- 漫谈 Google 的 Native Client 技术(一)---- 历史动力篇(Web 本地计算发展史)
转自:http://hzx5.blog.163.com/blog/static/40744388201172522313463/ 漫谈 Google 的 Native Client 技术(一)---- ...
- google开发新人入职100天,聊聊自己的经验&教训 个人对编程和开发的理解 技术发展路线
新人入职100天,聊聊自己的经验&教训 这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟. 对如何提问的一点见解. 对Google开发流程的吐槽. 如果 ...
- 漫谈 Google 的 Native Client(NaCl) 技术(二)---- 技术篇(兼谈 LLVM)
转自:http://hzx5.blog.163.com/blog/static/40744388201172531637729/ 漫谈 Google 的 Native Client(NaCl) 技术( ...
- 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 ...
- 腾讯QQ空间超分辨率技术TSR
腾讯QQ空间超分辨率技术TSR:为用户节省3/4流量,处理效果和速度超谷歌RAISR 雷锋网AI科技评论: 随着移动端屏幕分辨率越来越高,甚至像iPhone更有所谓的“视网膜屏”,人们对高清图片的诉求 ...
- google的云盘与公司网盘
很多人都很期待Google推出的云存储服务,也就是公司网盘.因为多数人相信,没有比google更适合做云存储的公司了,作为一个标准的Web公司或者说互联网公司,云端理所应当的优秀.但比起几年前听传言时 ...
- Google 云计算中的 GFS 体系结构
google 公司的很多业务具有数据量巨大的特点,为此,google 公司研发了云计算技术.google 云计 算结构中的 google 文件系统是其云计算技术中的三大法宝之一.本文主要介 ...
- Linux 容器技术史话:从 chroot 到未来
Linux 容器是一个在单一 Linux 主机上提供多个隔离的 Linux 环境的操作系统级虚拟技术.不像虚拟机(VM),容器并不需要运行专用的访客(guest)操作系统.容器们共享宿主机的(host ...
随机推荐
- Android | 带你零代码实现安卓扫码功能
目录 小序 背景介绍 前期准备 开始搬运 结语 小序 这是一篇纯新手教学,本人之前没有任何安卓开发经验(尴尬),本文也不涉及任何代码就可以使用一个扫码demo,华为scankit真是新手的福音-- ...
- 经典卷积神经网络算法(2):AlexNet
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- Spring官网阅读(十一)ApplicationContext详细介绍(上)
文章目录 ApplicationContext 1.ApplicationContext的继承关系 2.ApplicationContext的功能 Spring中的国际化(MessageSource) ...
- 物流配送中心管理系统(SSM+MYSQL)
工程项目视频观看地址:www.toutiao.com/i6804066711… 本文首先对系统所涉及到的基础理论知识进行阐述,并在此基础上进行了系统分析.系统分析是平台开发的一个不可缺少的环节,为了能 ...
- OpenWrt(LEDE)2020.4.12编译 UnPnP+NAS+多拨+网盘+DNS优化+帕斯沃 无缝集成
固件说明 基于Lede OpenWrt R2020.4.8版本(源码截止2020.4.12)Lienol Feed及若干自行维护的软件包 结合家庭x86软路由场景需要定制 按照家庭应用场景对固件及软件 ...
- java接口学习体会
一.接口引进的意义 为了解决java的单继承不足,即java的类可以实现多个接口. 二.抽象类.接口的区别 三.如何创建接口? 声明接口的关键字是interface,声明类的关键字为class. im ...
- JDBC09 CLOB文本大对象
CLOB(Character Large Object) -用于储存大量的文本数据 BLOB(Binary Large Object) -用于存储大量的二进制数据 -大字段有些特殊,不同数据处理的方式 ...
- JAVA异常以及字节流
异常 JAVA异常可以分为编译时候出现的异常和执行时候出现的异常 JVM默认处理异常的方法是抛出异常 异常处理 //第一种 try{ 可能会出错的代码 }catch{ 发生异常后处置方法 }final ...
- springboot+vue前后端免费开源
序言 继上一篇 一套管理系统基础模版 详细梳理一下安装流程,功能说明,开发规范等. 后端项目结构? 如何从零搭建环境开发? 如何打包部署? 接入开发及规范 项目地址 小结 后端项目结构 shop- ...
- HTML5新特性 websocket(重点)--多对多聊天室
一.html5新特性 websocket(重点)--多对多聊天室 HTTP:超文本传输协议 HTTP作用:传输网页中资源(html;css;js;image;video;..) HTTP是浏览器搬运 ...