amp不是优化开关而是硬性规则系统,必须100%合规才能被google amp cache收录并实现秒开,校验通过仅是前提,还需满足robots.txt放行、canonical页面200状态、amphtml链接无重定向等外部条件。

AMP 不是“开启就能加速”的开关,它是一套必须 100% 满足的硬性规则系统;你看到的“秒开”,几乎全部来自 https://yoursite-com.cdn.ampproject.org 这类 Google AMP Cache 节点,而不是你自己的服务器。
AMP 页面为什么本地跑得通却进不了 CDN 缓存
校验通过只是第一步,AMP Cache 是否收录还取决于三个外部条件:
-
robots.txt不能屏蔽 AMP 路径(例如Disallow: /amp/) - AMP 页面里
<link rel="canonical" href="/article">指向的非 AMP 页面,HTTP 状态码必须是200,且响应头不能含Cache-Control: no-store或no-cache - 非 AMP 页面的
<link rel="amphtml" href="/amp/article">必须返回200,不能是301→302→200多跳重定向
用 curl -I https://yoursite.com/amp/article 直接看响应头:如果没出现 AMP-Cache-Transform: google,说明根本没进缓存——这时候优化页面本身毫无意义。
验证器报错但页面看起来“能用”,这很危险
AMP Validator 的报错不是警告,是硬拦截。Google Search、Bing、CDN 都只认通过验证的页面。常见“看着能用但实际失效”的错误:
-
<img src="a.jpg">缺width和height属性:AMP 不允许原生<img>,必须用<amp-img></amp-img>,且两个属性值都得是正整数(0或空字符串也不行) - CSS 写在
<style amp-custom></style>里,但总字节数超了75000(注意是字节,不是 KB);压缩后仍超标,会被 runtime 强制清空样式 - 写了
!important、@import、* {}、position: fixed中任意一个,整个<style amp-custom></style>就被忽略 - 加了
<script>console.log(1)</script>:哪怕只是调试用,也会被 AMP 运行时直接移除,且导致amp-bind等扩展无法初始化
amp-img 替换不是改个标签名就完事
<amp-img></amp-img> 的行为和原生 <img> 有本质区别,参数必须按 AMP 调度逻辑填:
- 必须同时提供
width和height;若图片要响应式,用layout="responsive",此时宽高代表宽高比(如width="16" height="9") - 不支持
srcset和sizes,响应式图需靠media属性 + 多个<amp-img></amp-img>切换 - 不支持
decoding="async",这个由 AMP runtime 统一控制;手动加会触发 validator 报错:The attribute 'decoding' may not appear in tag 'amp-img' - 懒加载是默认开启的,不需要、也不能写
loading="lazy";写了反而报错
交互逻辑不能靠 JS 写,得用声明式绑定
想实现点击切换 tab、展开菜单、表单反馈?别写 document.addEventListener —— AMP 运行时会忽略所有 DOM 操作。正确路径是:
- 先引入扩展:
<script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script> - 给容器加
data-amp-bind属性(漏写会导致Binding failed控制台报错) - 用
[text]、[class]、[hidden]这类绑定语法,表达式里禁止调用函数、访问window或document - 表单提交必须走
action-xhr,后端返回 JSON,不能返回 HTML 片段
最常被忽略的一点:AMP Cache 不执行任何 JS,也不传 cookie,所以登录态、购物车这类依赖服务端状态的功能,必须用 <amp-list></amp-list> + 后端 API 动态拉取,不能靠前端 JS 存 localStorage 或 session。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











