HTML: 我的网站图标可以放在CDN上而不是/favicon.ico吗?

29

我的favicon.ico文件必须存储在域名的根目录下吗?或者我可以将它存储在另一个域名上吗?

也就是说,从www.example.com访问,这是有效的吗?

<link rel="shortcut icon" href="http://MY-CDN.example.com/favicon.ico" />

我想做的是从我的CDN上提供www.example.com的favicon。这样可以吗?有什么负面影响,如浏览器兼容性、性能等,我需要知道吗?

2个回答

40

可以。只需要查看此页面的源代码:

<link rel="shortcut icon" href="http://sstatic.net/so/favicon.ico">

然而,一些用户代理仍会尝试在您的域名根目录下获取它,因此您可能希望设置重定向以指向那里,这样您就不会收到404错误。

meder@meder-desktop:~$ curl -v http://stackoverflow.com/favicon.ico
* About to connect() to stackoverflow.com port 80 (#0)
*   Trying 69.59.196.211... connected
* Connected to stackoverflow.com (69.59.196.211) port 80 (#0)
> GET /favicon.ico HTTP/1.1
> User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.10
> Host: stackoverflow.com
> Accept: */*
> 
< HTTP/1.1 302 Redirect
< Content-Type: text/html; charset=UTF-8
< Location: http://sstatic.net/so/favicon.ico
< Server: Microsoft-IIS/7.0
< Date: Tue, 05 Jan 2010 01:54:23 GMT
< Content-Length: 156
< 
<head><title>Document Moved</title></head>
* Connection #0 to host stackoverflow.com left intact
* Closing connection #0
<body><h1>Object Moved</h1>This document may be found <a HREF="http://sstatic.net/so/favicon.ico">here</a></body>

2
“一些用户代理”基本上指的是IE 6及以下版本,因此这个问题正在逐渐消失。 - SpliFF
1
这仍然是世界上绝大多数人的选择,因此我认为它并不过时。 - meder omuraliev
1
难道真的只有IE6及更早版本才会盲目轮询/favicon.ico吗?感谢上帝。 - Paul D. Waite
2
我们可以在域的根目录下保留另一个favicon.ico的副本,而不必操作.htaccess文件吗? - Matt Parkins
3
现在我们可以假设IE6从未存在过,是吗? - Edgar Froes
静态溢出机会错过了。 - lukeocodes

0

你可以通过将头文件指向CDN来轻松完成此操作。例如:

<link rel="shortcut icon" href="//cdn.perfmatters.io/favicon.ico" type="image/x-icon" />

如果您需要更深入的细节,请查看以下教程,它包含了有关如何将您的网站图标托管在CDN上的所有必要信息。https://www.keycdn.com/blog/make-a-favicon/

这并不是您可以进行的最重要的优化,但是请记住,每一点都很重要且会累加。特别是当您只使用单个HTTP/2连接时。


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