浏览器会先请求 /favicon.ico 还是 <link> 标签?

9
我想将网站的favicon图标设置为从静态文件服务器请求,以优化性能。
如果我指定一个<link rel="shortcut icon" href="http://cdn.site.com/favicon.ico">,但在我的网站根目录中还有一个用作备用的/favicon.ico,浏览器会优先使用哪个?浏览器(哪些浏览器?)是否仍会查找/favicon.ico,这样从静态文件服务器转移就没意义了吗?
3个回答

31

我执行了上述建议的测试。我在一个域名的根目录下放置了 /favicon.ico 图标,并添加了一个链接,然后在以下浏览器中打开页面:

  1. Opera 10
  2. Opera 9.64
  3. Firefox 3.5
  4. IE 6
  5. IE 7
  6. IE 8
  7. Safari 4

它们都展示出加载了<link rel="shortcut icon" href="http://cdn.site.com/favicon.ico">(位于外部服务器)的图标。 我检查了 access.log,没有对 /favicon.ico 的请求!

然后我注释掉了<link>,再次在所有浏览器中检查,它们都显示了/favicon.ico图标和相应的access.log条目。


7
答案是:在大多数现代浏览器中,链接应该优先于本地文件,但对于非主流浏览器的实现情况可能会有所不同(尽管你可能并不关心除IE、Firefox、Safari和Chrome之外的其他浏览器)。
测试这一点也应该相当简单。只需将 favicon.ico 文件放在站点文件夹中,并在静态服务器上添加一个指向外观不同的图标文件的链接,然后查看不同浏览器加载哪个文件即可。

1
谢谢,我可以进行那个测试,但是......这也会包括检查访问日志以查看浏览器是否可能首先请求favicon.ico,然后决定改为使用链接的版本。听起来不合理,但这使得IE更有可能这样做。 - Jacob Rask

3

不要忘记,浏览器并不是唯一会请求网站图标的应用程序 - 许多网络爬虫和其他应用程序也会。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接