apple-touch-icon 有 22 个站,manifest 只有 9 个:27 个首页的图标声明实测

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

排名与引用5 分钟读完2410 次阅读
apple-touch-icon 有 22 个站,manifest 只有 9 个:27 个首页的图标声明实测

实测 · 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 字节、含 <bodystackoverflow.commedium.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 系浏览器的要求:nameshort_name、icons 里 "must contain a 192px and a 512px icon"、start_urldisplaydisplay_override,以及 prefer_related_applications "must be false or not present"。

apple-touch-icon 有 22 个站,manifest 只有 9 个

图标和描述图标的文件,差了两倍多。

声明站数占 27
apple-touch-icon2281%
theme-color1141%
rel=manifest933%
manifest 返回 20099 / 9

发 manifest 的那 9 个是 developer.mozilla.orgvercel.comlinear.appfigma.comrailway.comwww.netlify.comgithub.comsubstack.comwww.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.comprefer_related_applications 为 true
www.bbc.comname 是空的,也没有 start_url

github.com 这一行要读仔细:它不是错。把 prefer_related_applications 设成 true,是这个站在说「我更希望你装原生应用」,它的 manifest 里也确实带着 related_applications 列表。它是故意不过这条检查的。另外四份看起来更像是生成完就再没人打开过的文件。

9 份里 192 与 512 两个尺寸的图标一个不落,全都有。这是生成器唯一没弄错的一项,也是唯一一项弄错了你自己会立刻看见的。

两份 manifest 里没有站名

这一行对搜索是有代价的,而修它只要一行 JSON。

站点manifest name页面标题开头
developer.mozilla.orgMDN Web DocsMDN Web Docs
vercel.comVercelAgentic Infrastructure
linear.appLinearLinear
github.comGitHubGitHub
www.netlify.com(空)Push your ideas
www.bbc.com(空)BBC Home

www.netlify.com 那份 manifest 一共只有 icons 一个键。www.bbc.com 那份声明了 nameshort_name,但两个值都是空字符串 —— 这是同一个问题里更难发现的那一版:检查工具看见键就过去了。两份都以 200 返回,浏览器和爬虫都不会吭一声。

manifest 是一份机器可读的「我是谁」。名字留空,等于用沉默回答这个问题。

同一列里还有一处怪的。linear.appstart_url 写的是 https://linear.app/login,一个指向登录页的绝对地址。它通过了每一项文档检查,代价是装完之后的入口是登录界面,不是产品。

连 Content-Type 都对不齐

MDN 写的是这个文件的响应 "should return Content-Type: application/manifest+json"。9 份里 5 份是。

发出来的 Content-Type份数
application/manifest+json5
application/json3
application/octet-stream1

application/octet-stream 的又是 www.netlify.com —— 就是那份只剩图标数组的文件。静态托管把不认识的后缀当字节流发出去,这是最普通的解释,也正是没人发现这个文件里其他东西全空了的最普通的原因。

独立站要做的三件事

三行活,按这个顺序。

  1. 在浏览器里打开你自己的那份 manifest。不是打开生成它的工具,是打开服务器真正返回的那个文件。这批里两个站只要做这一步就能发现问题。
  2. name 写成你在别处用的那个品牌字符串,一字不差。这是又一处机器读「你是谁」的地方,为什么每一份都要一模一样,写在 品牌词:让答案引擎说对你是谁 里。
  3. 看一眼 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 之外的所有媒体站都没有。

apple-touch-icon 有 22 个站,manifest 只有 9 个:27 个首页的图标声明实测