apple-touch-icon 有 22 个站,manifest 只有 9 个:27 个首页的图标声明实测
apple-touch-icon 在 27 个首页里有 22 个声明,图标类 link 共 121 条,而真正描述这些图标的 manifest 只有 9 个站发,其中两份没写站名,能过 Chromium 可安装条件的只有 4 份。

实测 · 2026-08-29 · 27 个首页 · 121 条图标声明 · 9 份 manifest 拉取解析
样本 / 口径:2026-08-15 起沿用的同一批 30 个站,2026-08-29 13:27(+0800)各抓一次,用浏览器 UA,不执行 JavaScript。每一条 <link rel="manifest">、每一条图标类 link、每一个 theme-color 都记下来,再把声明出来的 manifest 地址逐个请求并解析成 JSON。
27 个首页里,22 个声明了 apple-touch-icon,图标类 link 元素一共 121 条 —— 图标这件事基本人人都做。但真正用来描述这些图标的那个文件只有 9 个站发了,其中两份从头到尾没写站名,能过 Chromium 公开的可安装条件的只有 4 份。
怎么测的
每个首页一次请求,然后对它指向的每个 manifest 各一次请求。纳入规则跑数前写死:最终 200、解压后至少 10,000 字节、含 <body。stackoverflow.com 与 medium.com 返回 403,www.reddit.com 返回 8,393 字节空壳,剩 27 个站。
判据来自规范,不是我们自己定的。W3C 把这个文件定义成 "a JSON document that contains startup parameters and application defaults for when a web application is launched",把 name 定义成 "a string that represents the name of the web application as it is usually displayed to the user"。MDN 列出 Chromium 系浏览器的要求:name 或 short_name、icons 里 "must contain a 192px and a 512px icon"、start_url、display 或 display_override,以及 prefer_related_applications "must be false or not present"。
apple-touch-icon 有 22 个站,manifest 只有 9 个
图标和描述图标的文件,差了两倍多。
| 声明 | 站数 | 占 27 |
|---|---|---|
| apple-touch-icon | 22 | 81% |
| theme-color | 11 | 41% |
| rel=manifest | 9 | 33% |
| manifest 返回 200 | 9 | 9 / 9 |
发 manifest 的那 9 个是 developer.mozilla.org、vercel.com、linear.app、figma.com、railway.com、www.netlify.com、github.com、substack.com、www.bbc.com。面板里的媒体站 —— 纽约时报、Wired、Ars Technica、TechCrunch、The Verge —— 一个都没发,只有 BBC 发了。
9 份里只有 4 份能装
对着 MDN 记录的那份清单逐项判,5 份不过,而且每一份栽的地方都不一样。
| 站点 | 缺什么 |
|---|---|
figma.com | 没有 start_url,也没有 short_name |
railway.com | 没有 start_url |
www.netlify.com | 整份只有一个 icons 数组 |
github.com | prefer_related_applications 为 true |
www.bbc.com | name 是空的,也没有 start_url |
github.com 这一行要读仔细:它不是错。把 prefer_related_applications 设成 true,是这个站在说「我更希望你装原生应用」,它的 manifest 里也确实带着 related_applications 列表。它是故意不过这条检查的。另外四份看起来更像是生成完就再没人打开过的文件。
9 份里 192 与 512 两个尺寸的图标一个不落,全都有。这是生成器唯一没弄错的一项,也是唯一一项弄错了你自己会立刻看见的。
两份 manifest 里没有站名
这一行对搜索是有代价的,而修它只要一行 JSON。
| 站点 | manifest name | 页面标题开头 |
|---|---|---|
| developer.mozilla.org | MDN Web Docs | MDN Web Docs |
| vercel.com | Vercel | Agentic Infrastructure |
| linear.app | Linear | Linear |
| github.com | GitHub | GitHub |
| www.netlify.com | (空) | Push your ideas |
| www.bbc.com | (空) | BBC Home |
www.netlify.com 那份 manifest 一共只有 icons 一个键。www.bbc.com 那份声明了 name 和 short_name,但两个值都是空字符串 —— 这是同一个问题里更难发现的那一版:检查工具看见键就过去了。两份都以 200 返回,浏览器和爬虫都不会吭一声。
manifest 是一份机器可读的「我是谁」。名字留空,等于用沉默回答这个问题。
同一列里还有一处怪的。linear.app 的 start_url 写的是 https://linear.app/login,一个指向登录页的绝对地址。它通过了每一项文档检查,代价是装完之后的入口是登录界面,不是产品。
连 Content-Type 都对不齐
MDN 写的是这个文件的响应 "should return Content-Type: application/manifest+json"。9 份里 5 份是。
| 发出来的 Content-Type | 份数 |
|---|---|
| application/manifest+json | 5 |
| application/json | 3 |
| application/octet-stream | 1 |
发 application/octet-stream 的又是 www.netlify.com —— 就是那份只剩图标数组的文件。静态托管把不认识的后缀当字节流发出去,这是最普通的解释,也正是没人发现这个文件里其他东西全空了的最普通的原因。
独立站要做的三件事
三行活,按这个顺序。
- 在浏览器里打开你自己的那份 manifest。不是打开生成它的工具,是打开服务器真正返回的那个文件。这批里两个站只要做这一步就能发现问题。
- 把
name写成你在别处用的那个品牌字符串,一字不差。这是又一处机器读「你是谁」的地方,为什么每一份都要一模一样,写在 品牌词:让答案引擎说对你是谁 里。 - 看一眼
start_url指的是不是你想让人打开的那一页。9 份里 4 份压根没写,还有一份指着登录页。
这些都不是排名因素,我们也不打算暗示它是。它和图标属于同一类东西 —— 机器会读、人从来不看的小声明 —— 而图标那一半量在 网站图标实测 里。如果眼下更急的是页面到底有没有被抓到、被引用,那是 QueryWin 怎么运转 在管的事。
这次没测出来的几件事
这些站在真实浏览器里能不能装上,不知道。我们只是拿每份文件对着一份公开清单逐项比对,没有真开一个 Chrome 试装,而浏览器还有别的附加条件,这轮没有评估。搜索引擎或者答案引擎到底读不读这个文件,我们也说不了 —— 两边的文档都没写,所以上面关于品牌名的那段只当一致性论据,不当已测效果。另外这一轮只取了首页声明的 manifest,同一个站在别处可能声明的是另一份。
常见问题
你们是怎么测的?
2026-08-29 对每个首页各抓一次,解析交付的 HTML 里的 rel="manifest"、图标类 link 和 theme-color,再对 9 个 manifest 地址各请求一次,解析成 JSON 后对照 MDN 记录的 Chromium 要求逐项判。
apple-touch-icon 现在还有必要写吗?
这批 27 个首页里 22 个写了,是所有图标类声明里覆盖率最高的一种。它决定的是被添加到主屏时用哪张图,和排名没有关系。
发 manifest 对 SEO 有帮助吗?
这次的数据证明不了,我们也没找到任何文档这么说。修它的老实理由是:它是又一份机器可读的站名,而这批里有两个站的这份和站本身对不上。
name 和 short_name 有什么区别?
W3C 把 short_name 定义成名字的短版本,用在 "there is insufficient space to display the full name" 的位置。这 9 份里有一份完全没写它。
不做应用还需要这个文件吗?
为了搜索的话,不需要。这 27 个站里 18 个没有它,面板上除 BBC 之外的所有媒体站都没有。


