Favicons:如何确保浏览器只下载 SVG 版本

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 提供适合您旅程各个阶段的云产品。 立即开始使用 $200 免费信用额度!

Šime Vidas 前几天给我发了私信,谈到 Twitter 上的这条帖子,来自 subzey。 我的 favicons 的 HTML 代码是这样的

<!-- Warning! Typo! -->
<link rel="icon" href="/favicon.ico" size="any">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">

属性 size 那里是错别字,应该是 sizes。 就像这样

<!-- Correct -->
<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">

有了这个更改,Chrome 就不会再 双重下载 两个图标,而是只使用 SVG 图标(如预期的那样)。 这是需要注意的地方。 我的 ICO 文件大小为 5.8kb,现在每次未缓存页面加载都会节省 5.8kb,这对我觉得意义重大。

Šime 在 网络平台新闻 #42 中提到了这一点。

SVG favicons 在除 Safari 外的 所有现代浏览器 中都得到支持。 如果您的网站同时声明了 ICO(回退)和 SVG 图标,请确保 在 ICO 的 <link> 标签中添加 sizes=any 属性阻止 Chrome 下载并使用 ICO 图标而不是 SVG 图标(有关更多信息,请参阅 Chrome 漏洞 1162276)。 CSS-Tricks 是一个示例网站,其 <head> 中包含 最佳图标标记(三个 <link> 元素,分别用于 favicon.ico、favicon.svg 和 apple-touch-icon.png)。

关于 CSS-Tricks 的那段说明有点夸张,因为只有在我事先指出错误的情况下,它才正确。 我认为我的错别字的根本原因是 Andrey 的文章,但问题已经 得到修复。 Andrey 的文章仍然可能是最实用 favicon 标记的最佳参考。